webentwicklung-frage-antwort-db.com.de

jQuery 'keypress' funktioniert für einige Tasten in Chrome nicht. Wie umgehen?

Ich versuche, die Tastendruck-Funktionalität zu implementieren, die ein div entfernt, wenn der Benutzer Esc drückt. Dies funktioniert für Firefox & IE mit dem folgenden Code:

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

Wenn ich eine Taste drücke, wird die erste alert angezeigt, und wenn ich die Escape-Taste drücke, wird auch die zweite alert angezeigt.

Dies funktioniert jedoch nicht mit Chrome. Die erste alert wird immer angezeigt, wenn ich eine der Buchstabentasten drücke, nicht aber die Escape-Taste, die Tabulatortaste, die Leertaste oder eine der Zahlen.

Warum sollte das sein? Gibt es eine Möglichkeit, Chrome auf diese Tastatureingaben zu reagieren?

60
DaveDev

Behandeln Sie stattdessen keydown.

113
SLaks

verwenden Sie keydown . Die Tastenkombination funktioniert nicht mit ESC in Chrome (nicht sicher bei anderen Browsern). 

$(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();
    }
}); 
18
bear

Für ESC-Taste:

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

Für Buchstabentasten wie 'L':

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

Funktioniert sowohl in Chrome als auch in Firefox

2
Dylan Foregger

Nach der zweiten Warnung auch hinzufügen

e.preventDefault();

Dadurch wird verhindert, dass die Standardaktion des Ereignisses ausgelöst wird.

Mehr Infos zu dieser Methode hier

Ihr Code sollte so aussehen

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

Taste "ESC" drücken

e.which: 0
e.keyCode: 27

keyup 'ESC'

e.which: 27
e.keyCode: 27

Verwenden Sie für nicht druckbare Zeichen keyup.

1

Mit der jqu-Datei von Jquery.hotkeys können Sie eine Tastenkombination erstellen 

$(document).bind('keydown', 'esc', function(){ });
0
ghodasara keval