574 votes

Qui code de touche pour la touche d'échappement avec jQuery

J'ai deux fonctions. Lorsque la touche entrée est pressée, les fonctions s'exécute correctement, mais lorsque la fuite est pressé, il ne le fait pas. Quel est le nombre correct pour la touche d'échappement?

$(document).keypress(function(e) { 
    if (e.which == 13) { $('.save').click(); }    // enter (works as expected)
    if (e.which == 27) { $('.cancel').click(); }  // esc   (does not work)
});

956voto

CMS Points 315406

Essayez-les avec de l' événement keyup:

$(document).keyup(function(e) {
  if (e.keyCode == 13) { $('.save').click(); }     // enter
  if (e.keyCode == 27) { $('.cancel').click(); }   // esc
});

80voto

Seth Petry-Johnson Points 5709

Plutôt que de coder en dur le mot de valeurs dans votre fonction, pensez à utiliser nommé constantes pour mieux transmettre votre message:

var KEYCODE_ENTER = 13;
var KEYCODE_ESC = 27;

$(document).keyup(function(e) {
  if (e.keyCode == KEYCODE_ENTER) { $('.save').click(); } 
  if (e.keyCode == KEYCODE_ESC) { $('.cancel').click(); } 
});

Certains navigateurs (FireFox, pas sûr d'autres) définir une KeyEvent objet qui expose ces types de constantes pour vous. Ce DONC, la question montre une belle façon de définir l'objet dans d'autres navigateurs aussi bien.

27voto

Hanzel Points 168

Pour trouver le mot de code pour n'importe quelle touche, à l'utilisation de cette fonction simple:

document.onkeydown = function(evt) {
    console.log(evt.keyCode);
}

16voto

Salty Points 4407

27 est le code de la touche d'échappement. :)

9voto

S. Ferit Arslan Points 136

Essayez le jEscape plugin (télécharger à partir de google drive)

$(document).escape(function() { 
   alert('ESC button pressed'); 
});

ou obtenir de mot de code pour la croix-navigateur

var code = (e.keyCode ? e.keyCode : e.which);
if (code === 27) { alert('ESC'); }
if (code === 13) { alert('ENTER'); }

peut-être que vous pouvez utiliser switch

var code = (e.keyCode ? e.keyCode : e.which);
switch (code) {
    case 27:
       alert('ESC');
       break;
     case 13:
       alert('ENTER');
       break;
}

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