web-dev-qa-db-fra.com

jQuery .keypress & .keydown .which

Ok alors quelle est la différence entre .keypress et .keydown/.keyup? À l'heure actuelle, j'utilise .keydown qui renvoie une valeur .which de 38 pour ma clé, maintenant si je le change en .keypress, il renvoie une valeur de 109 pour cette même clé. Quelle est la différence et pourquoi les valeurs sont-elles différentes pour la même clé?

34
ChrisMJ

Si vous appuyez sur un bouton, il déclenche un keydown et le relâche déclenche un keyup. Le keypress se situe généralement entre ces deux.

keydown et keyup parlent de ce qui clé a été modifié. keypress indique quel caractère cette clé représente.

Notez que tout dépend du navigateur!

Voir cet article sur les différences entre les événements clés mis en œuvre sur différents navigateurs .

22
RvdK

Je serai d $% ^ @ d, il y a vraiment une différence avec la touche et tout ce temps je ne m'en suis jamais rendu compte. lol

Voir mon violon et essayer quelque chose comme la lettre "r"

http://jsfiddle.net/SpYk3/NePCm/

D'une certaine façon, je n'ai jamais prêté attention à cela

Trouvé plus d'informations:

http://www.quirksmode.org/js/keys.html

"Les deux propriétés sont keyCode et charCode. Autrement dit, keyCode dit quelque chose sur la touche du clavier réelle sur laquelle l'utilisateur a appuyé, tandis que charCode donne la valeur ASCII du caractère résultant. Ces bits d'information n'ont pas besoin d'être les mêmes; par exemple, un minuscule 'a' et un majuscule 'A' ont le même keyCode, car l'utilisateur appuie sur la même touche, mais sur un charCode différent car le caractère résultant est différent.

Explorer et Opera ne prennent pas en charge charCode. Cependant, ils donnent les informations de caractère dans keyCode, mais uniquement avec onkeypress. onkeydown et -upkeyCode contient des informations clés. "

21
SpYk3HH

Vous devriez lire le post suivant: http://javascript.info/tutorial/keyboard-events

Keydown se déclenche à n'importe quelle pression sur une touche et donne un scan-code. Keypress se déclenche après avoir appuyé sur la touche et donne le code de caractère, mais il est garanti uniquement pour les touches de caractères.

14
jbl

Dans des cas normaux, optez pour keyup:

$(document).keyup(function(e){
  console.log(e.which);
});

Les raisons:

  1. keydown continue de se déclencher lorsque l'utilisateur maintient les touches enfoncées, tandis que keypress et keyup ne se déclenchent qu'une seule fois.
  2. keypress ne détecte pas les clés spéciales (par exemple SHIFT), keydown et keyup do.
7
Lucia

KeyPress se produit après KeyDown. Vous pouvez donc utiliser KeyDown pour déterminer de quelle clé il s'agit, puis KeyPress pour interdire ce caractère.

2
Denzyl Dick