89 votes

Vérifier les touches Ctrl / Maj / Alt sur l'événement 'clic'

Comment pourrais - je identifier les touches Ctrl / Maj / Alt sont pressés dans le code suivant?

 $("#my_id").click(function() {
    if (<left control key is pressed>) { alert("Left Ctrl"); }
    if (<right shift and left alt keys are pressed>) { alert("Right Shift + Left Alt"); }
});
 

85voto

John Hartsock Points 36565

Eh bien, cela ne fonctionnera pas dans tous les navigateurs, mais dans IE 8. Microsoft a mis en œuvre la possibilité de déterminer quelle touche (droite / gauche) était enfoncée. Voici un lien http://msdn.microsoft.com/en-us/library/ms534630(VS.85).aspx

J'ai également trouvé cet article miracle sur la frappe au clavier, la saisie au clavier, l'événement au clavier dans les navigateurs. http://unixpapa.com/js/key.html

 $('#someelement').bind('click', function(event){ 

    if(event.ctrlKey) {
      if (event.ctrlLeft) {
        console.log('ctrl-left'); 
      }
      else {
        console.log('ctrl-right');
      }
    }
    if(event.altKey) {
      if (event.altLeft) {
        console.log('alt-left'); 
      }
      else {
        console.log('alt-right');
      }
    }
    if(event.shiftKey) {
      if (event.shiftLeft) {
        console.log('shift-left'); 
      }
      else
      {
        console.log('shift-right');
      }
    }
  }); 
 

40voto

jAndy Points 93076
 $('#someelement').bind('click', function(event){
   if(event.ctrlKey)
      console.log('ctrl');
   if(event.altKey)
      console.log('alt');
   if(event.shiftKey)
      console.log('shift');

});
 

Je ne sais pas s'il est possible de vérifier les touches gauche / droite dans un événement de clic, mais je ne pense pas que ce soit possible.

1voto

user347594 Points 944

Utilisez js-hotkeys . C'est un plugin jQuery.

Ceci est un test pour montrer ce que vous recherchez. Il vous montre également comment capturer les touches standard gauche, droite, haut, bas et celles du pavé numérique (celui portant les chiffres 2,4,6,8)! http://afro.systems.googlepages.com/test-static-08.html

0voto

Plus facile que tout: vous utilisez l'événement keydown pour vérifier si c'est bien CTRL (17) ou SHIFT (16), vous utilisez ensuite l'événement keyup pour vérifier si c'est ENTER (13) et CTRL ou SHIFT enfoncé avant (touche enfoncée) annuler CTRL ou SHIFT sur n'importe quelle touche mais ENTRER

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