J’essaie d’implémenter une fonctionnalité de pression sur une touche qui supprime un div lorsque l’utilisateur frappe Esc
. Cela fonctionne pour Firefox et IE avec le code suivant:
$("body").keypress(function(e) { alert("any key pressed"); if (e.keyCode == 27) { alert("escape pressed"); } });
Si j’appuie sur une touche, la première alert
s’affiche et si j’appuie sur Échap, la deuxième alert
s’affiche également.
Cela ne fonctionne pas avec Chrome si. La première alert
est toujours affichée si j’appuie sur l’une des touches alphabétiques, mais pas lorsque j’appuie sur Échap, Tabulation, Espace ou sur l’un des numéros.
Pourquoi ça serait? Existe-t-il un moyen pour que Chrome réponde à ces pressions sur les touches?
Essayez plutôt de manipuler keydown
.
utilisez le keydown . keypress ne fonctionne pas avec ESC dans Chrome (pas sûr avec les autres navigateurs).
$(newTag).keydown(function(e) { //keypress did not work with ESC; if (event.which == '13') { ProfilePage.saveNewTag(search_id, $(newTag).val()); } else if (window.event.which){ $(newTag).remove(); } });
Pour la touche ESC:
$(document).keydown(function(e) { if(e.keyCode == 27) { /* Run code */ } }
Pour les clés de lettre, comme «L»:
$(document).keypress(function(e) { if(e.which == 108) { } });
Fonctionne dans Chrome et Firefox
Après la deuxième alerte append aussi
e.preventDefault();
Cela empêchera l’action par défaut de l’événement d’être déclenchée.
Plus d’infos sur cette méthode ici
Votre code devrait ressembler à
$("body").keypress(function(e) { alert("any key pressed"); if (e.keyCode == 27) { alert("escape pressed"); e.preventDefault(); }});
À l’aide du fichier jquery.hotkey js, vous pouvez créer une clé de sorting
$(document).bind('keydown', 'esc', function(){ });
touche ‘ESC’
e.which: 0 e.keyCode: 27
keyup ‘ESC’
e.which: 27 e.keyCode: 27
Pour les caractères non imprimables, mieux utiliser le keyup
.