688 Stimmen

Wie zu erkennen Escape-Taste drücken mit reinen JS oder jQuery?

Mögliches Duplikat:
Welcher Keycode für die Escape-Taste mit jQuery

Wie erkennt man das Drücken der Escape-Taste in IE, Firefox und Chrome? Der folgende Code funktioniert im IE und in Warnmeldungen 27 aber in Firefox wird Folgendes angezeigt 0

$('body').keypress(function(e){
    alert(e.which);
    if(e.which == 27){
        // Close my modal window
    }
});

1 Stimmen

Zuerst eine Browser-Erkennung durchführen?

7 Stimmen

Ich finde quirksmode.org immer zuverlässig, um herauszufinden, was in welchem Browser funktioniert: quirksmode.org/js/keys.html . Dort finden Sie, dass nur keyup o keydown in Verbindung mit keyCode funktioniert in allen Browsern.

2 Stimmen

Ich denke, der Titel dieser Frage sollte lauten: "Wie Escape-Tastendruck mit Jquery zu erkennen?" Oder die Antworten sollten in nativen javascript sein...

15voto

Dead Pool Punkte 111

Reines JS (kein JQuery)

document.addEventListener('keydown', function(e) {
    if(e.keyCode == 27){
      //add your code here
    }
});

12voto

Tarik Punkte 3876

Im Folgenden finden Sie den Code, der nicht nur die ESC-Taste deaktiviert, sondern auch die Bedingung prüft, unter der sie gedrückt wird, und je nach Situation die Aktion ausführt oder nicht.

In diesem Beispiel,

e.preventDefault();

deaktiviert den ESC-Tastendruck.

Sie können damit z.B. ein Div verstecken:

document.getElementById('myDivId').style.display = 'none';

Es wird auch berücksichtigt, wo die ESC-Taste gedrückt wurde:

(e.target.nodeName=='BODY')

Sie können diesen Teil der Bedingung entfernen, wenn Sie dies auf alle anwenden möchten. Oder Sie können hier auf INPUT abzielen, um diese Aktion nur anzuwenden, wenn sich der Cursor im Eingabefeld befindet.

window.addEventListener('keydown', function(e){
    if((e.key=='Escape'||e.key=='Esc'||e.keyCode==27) && (e.target.nodeName=='BODY')){
        e.preventDefault();
        return false;
    }
}, true);

8voto

Am besten ist es, dafür eine Funktion zu erstellen

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);
            };
        });
    });
};

BEISPIEL:

$("#my-div").escape(function () {
    alert('Escape!');
})

3voto

Duan Walker Punkte 305

Ich denke, der einfachste Weg ist Vanilla-Javascript:

document.onkeyup = function(event) {
   if (event.keyCode === 27){
     //do something here
   }
}

Aktualisiert: Geänderter Schlüssel => keyCode

3voto

Petr L. Punkte 378

Bei Firefox 78 verwenden Sie dies ("keypress" funktioniert nicht für die Escape-Taste):

function keyPress (e)(){
  if (e.key == "Escape"){
     //do something here      
  }
document.addEventListener("keyup", keyPress);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X