Wie erkennt man das Drücken der Escape-Taste mit reinem JS oder jQuery?

Lesezeit: 5 Minuten

Wie erkennt man das Drucken der Escape Taste mit reinem JS
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“.

    – Coeur

    10. Juli 18 um 13:33 Uhr

Wie erkennt man das Drucken der Escape Taste mit reinem JS
jmj

Notiz: keyCode ist veraltet werdenbenutzen key stattdessen.

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

1643910312 225 Wie erkennt man das Drucken der Escape Taste mit reinem JS
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.

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

  • Beachten Sie, dass Sie den Listener auch zu einer hinzufügen können <input> Element und wird daher nur ausgelöst, wenn dieses Element den Fokus hat.

    – Mike

    19. Februar 13 um 1:14 Uhr

  • Sie können auch überprüfen if (evt.key === 'Escape') { anstatt die veraltete zu verwenden keyCode

    – Keysox

    19. Mai 16 um 17:17 Uhr

  • @Keysox: Für die meisten modernen Browser ja, obwohl Sie vorerst noch Fallbacks benötigen. Ich werde meine Antwort bearbeiten.

    – Tim unten

    20. Mai ’16 um 10:51 Uhr

  • Zu Ihrer Information, MDNs Verweis auf keyCode (enthält den Deprecation-Knoten)

    – Stefan

    1. Juni 16 um 23:37 Uhr

  • Wenn Sie wissen möchten, ob Sie sicher verwenden können .keysehen caniuse.com/#feat=keyboardevent-key

    – Jaspis de Vries

    14. Januar 18 um 18:51 Uhr

Verwenden 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.');
    }
};

Verwenden jQuery Sie können die Arbeit überprüfen jsfiddle

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

  • 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

Wie erkennt man das Drucken der Escape Taste mit reinem JS
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:

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

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.

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

1643910313 551 Wie erkennt man das Drucken der Escape Taste mit reinem JS
Irshad

Reines JS

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

BEISPIEL:

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

  • Eigentlich scheint es so keypress feuert nicht auf die Escape-Taste. Zumindest nicht in Chrome auf einem Mac.

    – Samson

    20. Juli 15 um 18:36 Uhr

  • Danke für dieses Feedback, ich habe eine Aktualisierungs- und Änderungsregel erstellt. keydown das Problem lösen.

    – Ivijan Stefan Stipic

    21. Juli 15 um 9:04 Uhr

  • Ich habe Ihre Lösung aktualisiert, um eine “nur einmalige” Verwendung zu unterstützen. Hier ist ein Beispiel: jsfiddle.net/oxok5x2p .

    – dh

    8. August 16 um 7:19 Uhr


  • Coole Lösung für die nur einmal

    – Ivijan Stefan Stipic

    27. Oktober 20 um 7:30 Uhr

.

758240cookie-checkWie erkennt man das Drücken der Escape-Taste mit reinem JS oder jQuery?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy