729 votes

jQuery Événement Keypress: quelle touche a été pressée?

Avec jQuery, comment puis-je savoir quelle touche a été enfoncée alors que j'associe à l'événement keypress?

$('#searchbox input').bind('keypress', function(e) {});

Je veux déclencher une présenter lors de l' ENTRÉE est pressée.

[Mise à jour]

Même si je trouve la (ou mieux: un) répondre à moi-même, il semble y avoir une certaine marge de variation ;)

Est-il une différence entre le code et qui - surtout si je suis à la recherche d' ENTRÉE, qui ne sera jamais une unicode clé?

Faire certains navigateurs proposent une propriété et d'autres offrent de l'autre?

868voto

Eran Galperin Points 49594

Effectivement, c'est mieux:

 var code = e.keyCode || e.which;
 if(code == 13) { //Enter keycode
   //Do something
 }

136voto

Vladimir Prudnikov Points 2106

Essayez ceci

$('#searchbox input').bind('keypress', function(e) {
	if(e.keyCode==13){
		// Enter pressed... do anything here...
	}
});

61voto

user35612 Points 491

Si vous utilisez jQuery UI vous avez des traductions pour la commune de codes de clé. Dans ui/ui/ui.core.js:

$.ui.keyCode = { 
    ...
    ENTER: 13, 
    ...
};

Il y a aussi quelques traductions dans tests/simulate/jquery.simulate.js mais je ne pouvais pas trouver tout dans le noyau de la bibliothèque JS. Rappelez-vous, j'ai simplement grep ed les sources. Peut-être il ya une autre façon de se débarrasser de ces numéros de magie.

Vous pouvez également faire usage de Chaîne.charCodeAt et .fromCharCode:

>>> String.charCodeAt('\r') == 13
true
>>> String.fromCharCode(13) == '\r'
true

41voto

Frank Schwieterman Points 13519

Étant donné que vous êtes à l'aide de jQuery, vous devez absolument utiliser .qui. Oui, navigateurs ensemble des propriétés différentes, mais jQuery va normaliser et mettre de la .la valeur dans chaque cas. Voir documetation à http://api.jquery.com/keydown/ il déclare:

Afin de déterminer quelle touche a été pressée, nous pouvons examiner l'objet événement qui est passé à la fonction de gestionnaire. Alors que les navigateurs utilisent des propriétés différentes pour stocker cette information, jQuery normalise l' .la propriété sur laquelle nous pouvons donc utiliser fiable pour récupérer le code de la clé.

28voto

aSeptik Points 19103

C'est probablement la meilleure et complète!

Vraiment la croix-navigateur de la manière:

if (!event.which && ((event.charCode || event.charCode === 0) ? event.charCode: event.keyCode)) {
    event.which = event.charCode || event.keyCode;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X