Ich benutze einen keypress
Hörer zB ..
addEventListener("keypress", function(event){
}
Dies scheint jedoch keine Rücktaste zu erkennen, die Text löscht ...
Gibt es einen anderen Listener, mit dem ich dies erkennen kann?
javascript
keypress
addeventlistener
Skizit
quelle
quelle
keypress
Ereignisse in vielen Browsern aus. Siehe unixpapa.com/js/key.htmlVersuchen Sie
keydown
stattkeypress
.Die Tastatur - Ereignisse treten in dieser Reihenfolge:
keydown
,keyup
,keypress
Das Problem mit der Rücktaste ist wahrscheinlich, dass der Browser zurück navigiert
keyup
und Ihre Seite daskeypress
Ereignis daher nicht sieht .quelle
keydown
keypress
keyup
. unixpapa.com/js/testkey.htmlkeyup
angezeigt wird, wenn das Ereignis ausgelöst wird.keydown
Ereignis aus, aber das Zeichen wird erst einige Zeit später aus der Eingabe entfernt.Das
keypress
Ereignis kann in den verschiedenen Browsern unterschiedlich sein.Ich habe eine Jsfiddle erstellt , um Tastaturereignisse (mithilfe der JQuery-Verknüpfungen) in Chrome und Firefox zu vergleichen. Je nachdem, welchen Browser Sie verwenden, wird ein
keypress
Ereignis ausgelöst oder nicht - die Rücktaste wirdkeydown/keypress/keyup
in Firefox ausgelöst, jedoch nurkeydown/keyup
in Chrome.Einzelne Tastendruckereignisse ausgelöst
auf Chrome
keydown/keypress/keyup
wenn der Browser eine Tastatureingabe registriert (keypress
wird ausgelöst)keydown/keyup
wenn keine Tastatureingabe (getestet mit Alt, Shift, Backspace, Pfeiltasten)keydown
nur für tab?auf Firefox
keydown/keypress/keyup
Wenn der Browser eine Tastatureingabe registriert, aber auch für Rücktaste, Pfeiltasten, Tabulator (hierkeypress
wird also auch ohne Eingabe ausgelöst)keydown/keyup
für alt, verschiebenDies sollte nicht überraschen, denn laut https://api.jquery.com/keypress/ :
Die Verwendung des Tastendruck-Ereignistyps wird von W3C nicht mehr empfohlen ( http://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress ).
Um Ihre Frage zu beantworten, sollten Sie einen Rückraum in Firefox und Chrome verwenden
keyup
oderkeydown
erkennen.Probieren Sie es hier aus:
quelle
Etwas, das ich geschrieben habe, falls jemand auf ein Problem stößt, bei dem Leute die Rücktaste drücken, während sie denken, dass sie sich in einem Formularfeld befinden
quelle
Meine numerische Kontrolle:
Versuch es
Der BackSpace-Schlüsselcode lautet 8
quelle
event.key === "Rücktaste"
Neuere und viel sauberere: verwenden
event.key
. Keine willkürlichen Nummerncodes mehr!Mozilla Docs
Unterstützte Browser
quelle
.key
ist derzeit die von den Dokumenten empfohlene Option. Darüber hinaus werden verschiedene internationale Tastaturen mit unterschiedlichen Zuordnungen für eine bestimmte Taste unterstützt. Sie sind nicht willkürlich in dem Sinne, dass sie festgelegt sind, aber sie sind beim Lesen von CodeVerwenden Sie stattdessen eines der Ereignisse keyup / keydown / beforeinput.
basierend auf dieser Referenz ist, keypress veraltet und wird nicht mehr empfohlen.
wenn Sie „beforeinput“ vorsichtig sein , es der Browser - Kompatibilität . Der Unterschied zwischen "vor Eingabe" und den beiden anderen besteht darin, dass "vor Eingabe" ausgelöst wird, wenn sich der Eingabewert ändert. Bei Zeichen, die den Eingabewert nicht ändern können, wird er also nicht ausgelöst (z. B. Shift, Strg, Alt).
Ich hatte das gleiche Problem und mit Keyup wurde es gelöst.
quelle