Erfassen des Tastendrucks "Löschen" mit jQuery


118

Wenn Sie den Beispielcode aus der jQuery-Dokumentation für den Keypress-Ereignishandler verwenden, kann ich den DeleteSchlüssel nicht erfassen . Das folgende Snippet wird protokolliert, 0wenn die DeleteTaste in FireFox gedrückt wird:

$(document).keypress(function(e) {
    console.log(e.which);       
});

Es scheint eine Möglichkeit zu geben, den DeleteSchlüssel zu erfassen , aber es ist ein mehrdeutiger Begriff, sodass Google sich nicht als große Hilfe herausstellt.

Antworten:


202

Sie sollten das keypressEreignis nicht verwenden , sondern das Ereignis keyupoder keydown, da das keypressEreignis für echte (druckbare) Zeichen vorgesehen ist. keydownwird auf einer niedrigeren Ebene behandelt, sodass alle nicht druckbaren Schlüssel wie deleteund erfasst werden enter.


keyupwäre die Arbeit besser zu machen.
Localhoost

2
@atilkan nein, der Benutzer erwartet Feedback zu keydown, nicht keyup. Alle Texteditoren führen Aktionen aus, wenn eine Taste gedrückt wird, nicht wenn sie losgelassen wird.
Philippe Leybaert

1
@PhilippeLeybaert In meinem Fall kann das Programm das zuletzt gedrückte Zeichen nicht abfangen.
Localhoost

82
$('html').keyup(function(e){
    if(e.keyCode == 46) {
        alert('Delete key released');
    }
});

Quelle: Javascript-Zeichencodes Schlüsselcodes von www.cambiaresearch.com


18
Es sollte sein alert('Delete Key Released').
Waldheinz

Wenn jemand einen Tastendruck anstelle des von Tod vorgeschlagenen Keyups verwendet, wird das Ereignis keycode == 46 gegen angezeigt. Taste (Punkt). aber es funktioniert gut mit keyUp. Vielen Dank
Mubashar

34

Javascript-Schlüsselcodes

  • e.keyCode == 8 fürbackspace
  • e.keyCode == 46 für forward backspaceoder deleteSchaltfläche in PCs

Außer diesem Detail funktioniert Colin & Tods Antwort.


4
Es sollte e.keyCode und nicht e.KeyCode sein
Jerome

16

event.key === "Löschen"

Neuere und viel sauberere: verwenden event.key. Keine willkürlichen Nummerncodes mehr!

HINWEIS: Die alten Eigenschaften ( .keyCodeund .which) sind veraltet.

document.addEventListener('keydown', function(event) {
    const key = event.key; // const {key} = event; ES6+
    if (key === "Delete") {
        // Do things
    }
});

Mozilla Docs

Unterstützte Browser

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.