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.

Shane H.
quelle

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.

Philippe Leybaert
quelle
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

Tod Palin
quelle
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.

Csonuryilmaz
quelle
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

Gibolt
quelle