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...

1233voto

jmj Punkte 232204

Anmerkung: keyCode es veraltet werdend verwenden key stattdessen.

function keyPress (e) {
    if(e.key === "Escape") {
        // write your logic here.
    }
}

Code-Schnipsel:

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 sein

Es scheint keydown y keyup arbeiten, auch wenn keypress darf nicht


$(document).keyup(function(e) {
     if (e.key === "Escape") { // escape key maps to keycode `27`
        // <DO YOUR WORK HERE>
    }
});

Welcher Keycode für die Escape-Taste mit jQuery

289voto

Tim Down Punkte 304837

Le site keydown funktioniert gut für Escape und hat den Vorteil, dass Sie die Möglichkeit haben, die keyCode in allen Browsern. Außerdem müssen Sie den Hörer an document und nicht der Körper.

Update Mai 2016

keyCode ist inzwischen veraltet, und die meisten modernen Browser bieten die key Eigenschaft jetzt, obwohl Sie immer noch ein Fallback für anständige Browser-Unterstützung für jetzt brauchen (zum Zeitpunkt des Schreibens die aktuellen Versionen von Chrome und Safari nicht unterstützen).

Update September 2018 evt.key wird jetzt von allen modernen Browsern unterstützt.

document.onkeydown = function(evt) {
    evt = evt || window.event;
    var isEscape = false;
    if ("key" in evt) {
        isEscape = (evt.key === "Escape" || evt.key === "Esc");
    } else {
        isEscape = (evt.keyCode === 27);
    }
    if (isEscape) {
        alert("Escape");
    }
};

Click me then press the Escape key

46voto

Subodh Ghulaxe Punkte 17873

Verwendung von JavaScript Sie können die Arbeit überprüfen jsfiddle

document.onkeydown = function(evt) {
    evt = evt || window.event;
    if (evt.keyCode == 27) {
        alert('Esc key pressed.');
    }
};

Verwendung von jQuery Sie können die Arbeit überprüfen jsfiddle

jQuery(document).on('keyup',function(evt) {
    if (evt.keyCode == 27) {
       alert('Esc key pressed.');
    }
});

29voto

Irshad Punkte 868

Reines JS

können Sie einen Hörer an Folgendes anhängen keyUp Ereignis für das Dokument.

Wenn Sie außerdem sicherstellen wollen, dass keine andere Taste zusammen mit Esc Schlüssel, können Sie Werte von ctrlKey , altKey y 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')

            }
        }
    });

21voto

jAndy Punkte 223172

Prüfen auf keyCode && which & keyup || keydown

$(document).keydown(function(e){
   var code = e.keyCode || e.which;
   alert(code);
});

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