62 votes

La touche 'jQuery' ne fonctionne pas pour certaines clés de Chrome. Comment travailler?

Je suis en train de mettre en œuvre sur une touche de fonctionnalité qui vous permet de supprimer une div lorsque l'utilisateur appuie Esc. Cela fonctionne pour Firefox & IE avec le code suivant:

$("body").keypress(function(e) {
    alert("any key pressed");
    if (e.keyCode == 27) {
        alert("escape pressed");
    }
});

Si je frappe une touche, le premier alert est affiché, et si j'ai frappé à s'Échapper, le deuxième alert est également affiché.

Cela ne fonctionne pas avec google Chrome. La première alert est toujours affiché si j'ai touché les touches de lettre, mais pas quand j'appuie sur échap, Tab, de l'Espace ou à l'un des numéros.

Pourquoi en serait-il? Est-il possible de Chrome pour répondre à ces touches?

115voto

SLaks Points 391154

Essayez de gérer keydown place.

19voto

bear Points 363

utilisez keydown . La pression de touche ne fonctionne pas avec ESC dans Chrome (vous n'êtes pas sûr des 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();
    }
}); 
 

2voto

Dylan Foregger Points 11

Pour la touche ESC:

 $(document).keydown(function(e) {
  if(e.keyCode == 27) { // Run code }
}
 

Pour les touches alphabétiques, comme 'L':

 $(document).keypress(function(e) {
  if(e.which == 108) { }
});
 

Fonctionne dans Chrome et Firefox

1voto

Paris Polyzos Points 1648

Après la deuxième alerte, ajoutez également

 e.preventDefault();
 

Cela empêchera l'action par défaut de l'événement d'être déclenchée.

Plus d'informations 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();
}});
 

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