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.

Vous savez que jQuery normalise les différences entre les navigateurs? En jQuery, 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