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?
Behandeln Sie stattdessen keydown
.
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();
}
});
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
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();
}});
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
.
Mit der jqu-Datei von Jquery.hotkeys können Sie eine Tastenkombination erstellen
$(document).bind('keydown', 'esc', function(){ });