Wie erkennt man das Drücken der Escape-Taste mit reinem JS oder jQuery?
Lesezeit: 5 Minuten
Mithun Sreedharan
Mögliches Duplikat:
Welcher Keycode für Escape-Taste mit jQuery
Wie erkennt man das Drücken der Escape-Taste in IE, Firefox und Chrome? Der folgende Code funktioniert in IE und Warnungen 27aber in Firefox warnt es 0
$('body').keypress(function(e){
alert(e.which);
if(e.which == 27){
// Close my modal window
}
});
Führen Sie zuerst eine Browsererkennung durch?
– in einem
30. Juli 10 um 8:01 Uhr
Ich finde quirksmode.org immer zuverlässig, um herauszufinden, was in welchem Browser funktioniert: quirksmode.org/js/keys.html . Dort findet man nur das keyup oder keydown in Kombination mit keyCode funktioniert in allen Browsern.
– Felix Klinge
30. Juli 10 um 8:02 Uhr
Ich denke, der Titel dieser Frage sollte lauten: “Wie erkennt man das Drücken der Escape-Taste mit jquery?” Oder die Antworten sollten in nativem Javascript sein …
– Welke
30. Januar 14 um 14:27 Uhr
$(document).on("keyup", function (e) {var code = e.keyCode || e.which; alert('key pressed: ' + code);}); Grüße aus dem Jahr 2014
– Kalle H. Väravas
02.03.14 um 18:14 Uhr
Mögliches Duplikat von „Welcher Tastencode für Escape-Taste mit jQuery“.
function keyPress (e) {
if(e.key === "Escape") {
// write your logic here.
}
}
Code-Auszug:
var msg = document.getElementById('state-msg');
document.body.addEventListener('keypress', function(e) {
if (e.key == "Escape") {
msg.textContent += 'Escape pressed:'
}
});
Press ESC key <span id="state-msg"></span>
keyCode wird veraltet
Es scheint keydown und keyup Arbeit, obwohl keypress nicht dürfen
$(document).keyup(function(e) {
if (e.key === "Escape") { // escape key maps to keycode `27`
// <DO YOUR WORK HERE>
}
});
Welcher Keycode für Escape-Taste mit jQuery
zum Lösen: $(document).unbind(“keyup”, keyUpFunc);
– Plattsy
6. Mai 13 um 5:32 Uhr
Um die Bindung aufzuheben, können Sie auch einen Namensraum für das Ereignis verwenden. $(document).on('keyup.unique_name', ...) und $(document).unbind('keyup.unique_name')
– Lachlan McD.
13. Mai 13 um 3:32 Uhr
Es wird empfohlen, e.what (anstelle von e.keycode) zu verwenden, um zu überprüfen, welche Taste gedrückt wurde. jQuery normalisiert Keycode und Charcode (wird in älteren Browsern verwendet)
– DMTintner
18. März 14 um 11:51 Uhr
Sie sollten immer verwenden ===.
– pmandell
3. Februar 16 um 17:02 Uhr
@LachlanMcD – sei dir dessen bewusst (5 Jahre später!). .unbind ist jetzt ab jQuery 3.0 veraltet … Sie sollten verwenden .off
– Freifall
24. April 18 um 14:07 Uhr
Tim unten
Der keydown event funktioniert gut für Escape und hat den Vorteil, dass Sie es verwenden können keyCode in allen Browsern. Außerdem müssen Sie den Listener anhängen document eher als der Körper.
Aktualisierung Mai 2016
keyCode ist jetzt dabei, veraltet zu sein, und die meisten modernen Browser bieten die key -Eigenschaft, obwohl Sie vorerst noch einen Fallback für eine anständige Browserunterstützung benötigen (zum Zeitpunkt des Schreibens unterstützen die aktuellen Versionen von Chrome und Safari dies nicht).
Aktualisierung September 2018 evt.key wird jetzt von allen modernen Browsern unterstützt.
Laut Intellij ist Ihr Vanilla-js-Code-Snippet veraltet. Wann sollte ich aufhören, es zu verwenden?
– Dimitri Kopriwa
2. November 2020 um 21:42 Uhr
jAndy
überprüfe auf keyCode && which & keyup || keydown
$(document).keydown(function(e){
var code = e.keyCode || e.which;
alert(code);
});
Unten ist der Code, der nicht nur die ESC-Taste deaktiviert, sondern auch die Bedingung überprüft, wo sie gedrückt wird, und je nach Situation die Aktion ausführt oder nicht.
In diesem Beispiel
e.preventDefault();
deaktiviert die ESC-Tastendruckaktion.
Sie können so etwas tun, um ein Div zu verstecken:
Dabei wird auch die gedrückte ESC-Taste berücksichtigt:
(e.target.nodeName=='BODY')
Sie können diesen if-Bedingungsteil entfernen, wenn Sie dies für alle gelten möchten. Oder Sie können hier auf INPUT zielen, um diese Aktion nur anzuwenden, wenn sich der Cursor im Eingabefeld befindet.
Sie können einen Listener anhängen keyUp Ereignis für das Dokument.
Wenn Sie sichergehen möchten, dass keine andere Taste gleichzeitig gedrückt wird Esc Schlüssel können Sie Werte von verwenden ctrlKey, altKeyund shifkey.
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') {
//if esc key was not pressed in combination with ctrl or alt or shift
const isNotCombinedKey = !(event.ctrlKey || event.altKey || event.shiftKey);
if (isNotCombinedKey) {
console.log('Escape key was pressed with out any group keys')
}
}
});
Der beste Weg ist, dafür eine Funktion zu machen
FUNKTION:
$.fn.escape = function (callback) {
return this.each(function () {
$(document).on("keydown", this, function (e) {
var keycode = ((typeof e.keyCode !='undefined' && e.keyCode) ? e.keyCode : e.which);
if (keycode === 27) {
callback.call(this, e);
};
});
});
};
Führen Sie zuerst eine Browsererkennung durch?
– in einem
30. Juli 10 um 8:01 Uhr
Ich finde quirksmode.org immer zuverlässig, um herauszufinden, was in welchem Browser funktioniert: quirksmode.org/js/keys.html . Dort findet man nur das
keyup
oderkeydown
in Kombination mitkeyCode
funktioniert in allen Browsern.– Felix Klinge
30. Juli 10 um 8:02 Uhr
Ich denke, der Titel dieser Frage sollte lauten: “Wie erkennt man das Drücken der Escape-Taste mit jquery?” Oder die Antworten sollten in nativem Javascript sein …
– Welke
30. Januar 14 um 14:27 Uhr
$(document).on("keyup", function (e) {var code = e.keyCode || e.which; alert('key pressed: ' + code);});
Grüße aus dem Jahr 2014– Kalle H. Väravas
02.03.14 um 18:14 Uhr
Mögliches Duplikat von „Welcher Tastencode für Escape-Taste mit jQuery“.
– Coeur
10. Juli 18 um 13:33 Uhr