191 votes

Raccourcis clavier avec jQuery

Comment puis-je créer un événement à déclencher si quelqu'un appuie sur la lettre g ?

(Où est la carte des caractères pour toutes les lettres, BTW ?)

3 votes

Carte de caractère pour toutes les lettres de ce site de grande classe : rmhh.co.uk/ascii.html

1 votes

Un autre site utile pour les codes clés est keycode.info

144voto

npad Points 3208

Depuis que cette question a été posée à l'origine, John Resig (l'auteur principal de jQuery) a bifurqué et amélioré le projet js-hotkeys. Sa version est disponible à l'adresse suivante

http://github.com/jeresig/jquery.hotkeys

6 votes

Il prend en charge le meta ce qui n'est pas pris en charge par le js-hotkeys :) Merci

0 votes

Il a un paquet Nuget, alors j'ai choisi celui-ci.

0 votes

Je dois dire qu'il est très bon pour les combinaisons de touches (surtout les touches spéciales comme shift,ctrl,alt,...) mais j'ai des problèmes avec le mapping de base 0-9 et a-z).

87voto

Ionut Staicu Points 6523

Qu'en est-il js-hotkeys : Le plugin Javascript jQuery Hotkeys ? ( Démonstration )

Le plugin jQuery.Hotkeys vous permet d'ajouter et de supprimer facilement des gestionnaires d'événements clavier n'importe où dans votre code, en prenant en charge presque toutes les combinaisons de touches. Il suffit d'une ligne de code pour lier ou délier une combinaison de touches.

Exemple : Reliure Ctrl + c :

$(document).bind('keydown', 'ctrl+c', fn);

2 votes

WOW... c'est probablement le plugin le plus facile que j'ai jamais utilisé !

0 votes

En travaillant avec ce système, il n'empêche pas les défauts du navigateur. Ainsi, Ctrl+n ouvrira un nouvel onglet dans le navigateur, par exemple. Il n'y a pas d'accès à l'objet événement, donc je ne suis pas sûr de savoir comment empêcher le défaut.

0 votes

@Gurnard Nous ne devrions probablement pas empêcher les valeurs par défaut de l'utilisateur, sauf dans de rares cas où cela a été communiqué à l'utilisateur à l'avance et qu'il s'attend à ce comportement dans l'application web (et peut-être fournir un paramètre pour qu'il puisse le changer)... sinon c'est incroyablement ennuyeux. Exemple 1 : Lors de la composition d'un message sur Stack Exchange et au lieu de masquer le navigateur, Cmd H fait ## Heading ## apparaissent dans le champ de texte. Exemple 2 : Cette question. Exemple 3 : Ce Q&R .

45voto

Craig Points 1449

J'ai récemment écrit une bibliothèque autonome pour cela. Elle ne nécessite pas jQuery, mais vous pouvez l'utiliser avec jQuery sans problème. Elle s'appelle Mousetrap.

Vous pouvez le consulter à l'adresse suivante http://craig.is/killing/mice

4 votes

C'est très bien. J'apprécie vraiment la prise en charge de la gestion des séquences de touches.

2 votes

J'utilise Moustrap et je le trouve bien meilleur que le plugin HotKeys. Très recommandé. @Crag merci pour le bon travail.

1 votes

J'ai aimé la documentation ainsi que la façon d'empêcher le comportement par défaut des éléments. Cette bibliothèque devrait être sur NuGet.

25voto

simplyharsh Points 11663

Il existe de nombreuses façons de procéder. Mais je suppose que vous êtes intéressé par une implémentation avancée. Il y a quelques jours, j'ai fait la même recherche, et j'en ai trouvé une.

Ici.

Il est bon pour capturer les événements du clavier et vous trouverez les cartes de caractères aussi. Et ce qui est bien, c'est que ... c'est jQuery.

Profitez de la Démonstration et décider.

2 votes

Pour que ce soit clair, cela fonctionne parfaitement sans jquery aussi.

17voto

Michael Koper Points 3507

Si vous voulez juste des raccourcis simples (comme une lettre, par exemple juste le g), vous pouvez facilement le faire sans plugin supplémentaire :

$(document).keypress(function(e){
  if(e.charCode == 103){
    // Do your thing
  }
})

2 votes

Cela ne fonctionne pas dans IE9. Dans IE, quelque chose comme ceci fonctionne : e = e || window.event ; var keyCode = e.keyCode || e.which ;

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