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é?
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 .
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
etcharCode
. Autrement dit,keyCode
dit quelque chose sur la touche du clavier réelle sur laquelle l'utilisateur a appuyé, tandis quecharCode
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êmekeyCode
, car l'utilisateur appuie sur la même touche, mais sur uncharCode
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 danskeyCode
, mais uniquement aveconkeypress
.onkeydown
et-up
keyCode
contient des informations clés. "
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.
Dans des cas normaux, optez pour keyup
:
$(document).keyup(function(e){
console.log(e.which);
});
Les raisons:
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.keypress
ne détecte pas les clés spéciales (par exemple SHIFT
), keydown
et keyup
do.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.