Avec jQuery, comment savoir quelle touche a été enfoncée lorsque je me lie à l'événement de pression de touche?
$('#searchbox input').bind('keypress', function(e) {});
Je veux déclencher une soumission lorsque vous ENTERappuyez sur.
[Mise à jour]
Même si j'ai trouvé la réponse (ou mieux: une) moi-même, il semble y avoir une certaine marge de variation;)
Y a-t-il une différence entre keyCode
et which
- surtout si je cherche juste ENTER, qui ne sera jamais une clé unicode?
Certains navigateurs fournissent-ils une propriété et d'autres fournissent-ils l'autre?
Réponses:
En fait, c'est mieux:
la source
e.which
, quel que soit l'événement que vous utilisez.e.which
n'est pas défini (reste0
), mais l'e.keyCode
est (9
). Voir stackoverflow.com/questions/4793233/… pourquoi cela compte.Essaye ça
la source
Si vous utilisez jQuery UI, vous avez des traductions pour les codes de clé communs. Dans ui / ui / ui.core.js :
Il y a aussi quelques traductions dans tests / simulate / jquery.simulate.js mais je n'ai pas pu en trouver dans la bibliothèque JS principale. Remarquez, je n'ai fait que grpper les sources. Il existe peut-être un autre moyen de se débarrasser de ces nombres magiques.
Vous pouvez également utiliser String.charCodeAt et .fromCharCode:
la source
Uncaught TypeError: String.charCodeAt is not a function
Je pense que vous vouliez dire'\r'.charCodeAt(0) == 13
Étant donné que vous utilisez jQuery, vous devez absolument utiliser .which. Oui, différents navigateurs définissent des propriétés différentes, mais jQuery les normalisera et définira la valeur .which dans chaque cas. Voir la documentation sur http://api.jquery.com/keydown/ il indique:
la source
... cet exemple empêche la soumission du formulaire (régulièrement l'intention de base lors de la capture de la touche # 13):
la source
edit: Cela ne fonctionne que pour IE ...
Je me rends compte que c'est une ancienne publication, mais quelqu'un pourrait trouver cela utile.
Les événements clés sont mappés, donc au lieu d'utiliser la valeur du code clé, vous pouvez également utiliser la valeur clé pour la rendre un peu plus lisible.
Voici une feuille de triche avec les clés mappées que j'ai obtenues de ce blog
la source
e.key
propriété.la source
event.which
.Découvrez l'excellent plugin jquery.hotkeys qui prend en charge les combinaisons de touches:
la source
J'espère que cela peut vous aider !!!
la source
C'est à peu près la liste complète des codes clés:
la source
D'accord, j'étais aveugle:
contiendra le code ASCII de la clé.
Voir https://developer.mozilla.org/En/DOM/Event.which
la source
Voici une description détaillée du comportement des différents navigateurs http://unixpapa.com/js/key.html
la source
Je vais simplement compléter le code de solution avec cette ligne
e.preventDefault();
. En cas de champ de saisie du formulaire nous n'assistons pas à la soumission lors de la saisie presséela source
Ajoutez une soumission cachée, ne tapez pas caché, envoyez simplement avec style = "display: none". Voici un exemple (suppression des attributs inutiles du code).
il acceptera la clé d'entrée en natif, pas besoin de JavaScript, fonctionne dans tous les navigateurs.
la source
Voici une extension jquery qui gérera la touche entrée pressée.
Un exemple de travail peut être trouvé ici http://jsfiddle.net/EnjB3/8/
la source
Sorcière ;)
Démo: http://jsfiddle.net/molokoloco/hgXyq/24/
la source
Utilisez
event.key
et JS moderne!Plus de codes numériques . Vous pouvez vérifier la clé directement. Par exemple
"Enter"
,"LeftArrow"
,"r"
ou"R"
.Documents Mozilla
Navigateurs pris en charge
la source
vous devriez avoir firbug pour voir un résultat dans la console
la source
Certains navigateurs utilisent keyCode, d'autres utilisent lesquels. Si vous utilisez jQuery, vous pouvez l'utiliser de manière fiable car jQuery standardise les choses. Réellement,
la source
Selon la réponse de Kilian:
Si seule la touche entrée est importante:
la source
La façon la plus simple que je fais est:
la source
event.which
au lieu deevent.keyCode
. De jQuery API :The event.which property normalizes event.keyCode and event.charCode. It is recommended to watch event.which for keyboard key input.
Je viens de faire un plugin pour jQuery qui permet plus facilement
keypress
événements . Au lieu d'avoir à trouver le numéro et à le mettre, tout ce que vous avez à faire est le suivant:Comment l'utiliser
C'est si simple. Veuillez noter qu'il ne
theKeyYouWantToFireAPressEventFor
s'agit pas d' un nombre, mais d'une chaîne (par exemple,"a"
pour déclencher lorsque vous Aappuyez sur,"ctrl"
pour déclencher lorsque vous appuyez sur, ou, dans le cas d'un nombre, simplement , pas de guillemets. Cela se déclencherait lorsque vous appuyez sur).CTRL (control)1
1L'exemple / code:
Afficher l'extrait de code
Parce que la version longue est tellement ... eh bien ... longue, j'ai fait un lien PasteBin pour elle:
http://pastebin.com/VUaDevz1
la source
Les
event.keyCode
etevent.which
sont obsolètes. Voir la réponse @Gibolt ci-dessus ou consultez la documentation: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventevent.key
devrait être utilisé à la placekeypress
l'événement est également obsolète: https://developer.mozilla.org/en-US/docs/Web/API/Document/keypress_eventla source
Essaye ça:
la source