La «pression de touche» de jQuery ne fonctionne pas pour certaines clés de Chrome. Comment contourner?

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 .