Comment puis-je lier une fonction aux touches fléchées gauche et droite en Javascript et / ou jQuery? J'ai regardé le plugin js-hotkey pour jQuery (encapsule la fonction de liaison intégrée pour ajouter un argument pour reconnaître des clés spécifiques), mais il ne semble pas prendre en charge les touches fléchées.
418
Réponses:
Si vous devez prendre en charge IE8, démarrez le corps de la fonction en tant que
e = e || window.event; switch(e.which || e.keyCode) {
.(modifier 2020)
Notez qu'il
KeyboardEvent.which
est désormais obsolète. Voir cet exemple en utilisantKeyboardEvent.key
une solution plus moderne pour détecter les touches fléchées.la source
e.which
comme jQuery le recommande pour les navigateurs croisés, des utilisations à lae.preventDefault()
place dereturn false
(return false
sur un gestionnaire d'événements jQuery déclenche les deuxe.preventDefault()
ete.stopPropagation()
, dont le second va entraîner l'échec des événements ajoutés ultérieurement car l'événement ne se propage pas vers eux), et au fin du commutateur, retournera sans appelere.preventDefault()
s'il s'agit d'une autre clé que celles recherchées pour ne pas entraver l'utilisation des autres clés, et au lieu de$.ui.keyCode.DOWN
cela, elle se compare aux nombres (BEAUCOUP plus rapidement).$.ui.keyCode.DOWN
vous accédez$
à votre recherche dans votre portée lexicale, ne la trouvez pas, montez d'un niveau ... recherchez$
, répétez jusqu'à dans la portée globale, trouvez-la sur la portée globalewindow
, accédez$
à la fenêtre, accédezui
àwindow.$
, accédezkeyCode
àwindow.$.ui
, accédezDOWN
àwindow.$.ui.keyCode
pour obtenir la valeur primitive que vous souhaitez comparer, puis effectuez votre comparaison réelle. Que la vitesse soit importante ou non pour vous est une décision personnelle, j'ai juste tendance à éviter 4 niveaux d'accès quand il y a une situation où je peux tout aussi facilement écrire / commenter la primitive.Codes de caractères:
la source
e.which
plutôt quee.keyCode
pour plus de prise en charge du navigateur. Voir mon commentaire ci-dessous.Vous pouvez utiliser le keyCode des touches fléchées (37, 38, 39 et 40 pour gauche, haut, droite et bas):
Vérifiez l'exemple ci-dessus ici .
la source
The event.which property normalizes event.keyCode and event.charCode
- api.jquery.com/event.whichC'est un peu tard, mais HotKeys a un bogue très important qui fait que les événements sont exécutés plusieurs fois si vous attachez plus d'un raccourci clavier à un élément. Utilisez simplement jQuery.
la source
J'ai simplement combiné les meilleurs morceaux des autres réponses:
la source
Vous pouvez utiliser KeyboardJS. J'ai écrit la bibliothèque pour des tâches comme celle-ci.
Découvrez la bibliothèque ici => http://robertwhurst.github.com/KeyboardJS/
la source
Une solution laconique utilisant du Javascript simple (merci à Sygmoral pour les améliorations suggérées):
Voir également https://stackoverflow.com/a/17929007/1397061 .
la source
document.addEventListener('keydown', myFunction);
Êtes-vous sûr que jQuery.HotKeys ne prend pas en charge les touches fléchées? J'ai déjoué leur démo avant et j'ai observé que la gauche, la droite, le haut et le bas fonctionnaient quand je l'ai testée dans IE7, Firefox 3.5.2 et Google Chrome 2.0.172 ...
EDIT : Il semble que jquery.hotkeys a été déplacé vers Github: https://github.com/jeresig/jquery.hotkeys
la source
Au lieu d'utiliser
return false;
comme dans les exemples ci-dessus, vous pouvez utilisere.preventDefault();
ce qui fait la même chose mais est plus facile à comprendre et à lire.la source
return false;
ete.preventDefault();
ne sont pas exactement les mêmes. Voir stackoverflow.com/a/1357151/607874Exemple de js purs avec aller à droite ou à gauche
la source
Vous pouvez utiliser jQuery bind:
la source
Vous pouvez vérifier si vous
arrow key
appuyez sur:la source
empêcher la flèche disponible uniquement pour tout autre objet SELECT, eh bien en fait je n'ai pas de test sur un autre objet LOL. mais il peut arrêter l'événement flèche sur la page et le type d'entrée.
j'essaie déjà de bloquer la flèche gauche et droite pour changer la valeur de l'objet SELECT en utilisant "e.preventDefault ()" ou "return false" sur "kepress" "keydown" et "keyup" événement mais cela change toujours la valeur de l'objet. mais l'événement vous dit toujours que la flèche a été enfoncée.
la source
Une bibliothèque Javascript robuste pour capturer les saisies au clavier et les combinaisons de touches saisies. Il n'a pas de dépendances.
http://jaywcjlove.github.io/hotkeys/
la source
Je suis venu ici à la recherche d'un moyen simple de laisser l'utilisateur, lorsqu'il se concentre sur une entrée, utiliser les touches fléchées pour +1 ou -1 une entrée numérique. Je n'ai jamais trouvé de bonne réponse, mais j'ai créé le code suivant qui semble fonctionner à merveille - ce qui rend tout le site maintenant.
la source
Avec café et Jquery
la source