de l'événement.keycode vs événement.qui
Je suis tombé sous le coup de Firefox keydown comportement en appuyant sur la touche entrée (en fait n'importe quelle touche) sans avoir besoin de se concentrer sur un domaine spécifique ne sera PAS déclencher une keydown cas, il va déclencher une keypress événement.
Cela pourrait être très déroutant comme le keydown et keyup événement JavaScript codes de clé alors que keypress utilise des codes ASCII. Heureusement, 13 (entrée/retour) est commun aux deux.
Est-il une raison pourquoi les FF à l'aide de keypress dans cette circonstance? Quel est l'avantage?
Une fois que ceci a été établi IE8 jeta un idiot qu'il n'est pas permis de preventDefault exigeants au lieu returnValue = false
l'extrait de code suivant à partir d'une autre SORTE de post s'est révélée très utile:
event.preventDefault ? event.preventDefault() : event.returnValue = false;
Lors de la recherche pour résoudre ces problèmes, j'ai toujours été confondu par event.keycode
vs event.which
. À savoir je fais mal à l'aide d'une instruction switch similaires à:
$("#class_Name").bind("keydown", function(event){
//do not test input if field controls used
switch(event.which){
case 13:
//enter key
event.preventDefault ? event.preventDefault() : event.returnValue = false;
break;
}
Est le suivant mieux, si oui, pourquoi?
$("body").keypress(function(event){
//stop inadvertant form submission
if (event.keycode == "13"){
event.preventDefault ? event.preventDefault() : event.returnValue = false;
}
});
Je voudrais juste savoir pour que je sache qui est le mieux pour les appliquer.
Merci beaucoup.
event.which
est prévu pour être compatible sur tous les navigateurs. Aussi, jQuery event.preventDefsult();
va également travailler dans l'Ancien.W, Salut Rob oui en effet j'étais au courant de cela. En ligne jquery documentation les documents de l'utilisation de l'événement.qui que j'ai utilisé. De nombreux postes montrons ici l'utilisation du mot de code non. D'où la question. Je comprends que l'événement.preventDefsult(); devrait fonctionner partout.
Vous demandez-vous si l'on peut obtenir une mise à jour sur cette pertinents pour les navigateurs en 2016?
OriginalL'auteur codepuppy | 2012-08-29
Vous devez vous connecter pour publier un commentaire.
Certains navigateurs utilisent
keyCode
et d'autres utilisentwhich
. Mais avec jQuery c'est normalisé de sorte que vous n'avez pas à y penser. Vous pouvez simplement choisir celui que vous préférez.OriginalL'auteur sQVe
Selon ce commentaire jQuery peuvent être peu fiables et cette page dit:
event.which
est pas défini dans IE<9 surkeydown
etkeyup
.event.keyCode
est 0 dans Gecko (Seamonkey, Firefox) surkeypress
pour les touches que le retour d'un personnage.event.charCode
est uniquement pris en charge sur keydown et keyup par Internet Explorer (Mac).Essayez-la sur JSFiddle
var code = event.which || event.keyCode || event.charCode;
Cet attrape selon le champ n'est pas null ou 0. Si elles sont toutes à zéro, puis elle retourne 0.OriginalL'auteur Cees Timmerman