Ich frage mich, was ich falsch mache:
$(".s").keypress(function(e) {
switch (e.keyCode) {
case 8: // Backspace
//console.log('backspace');
case 9: // Tab
case 13: // Enter
case 37: // Left
case 38: // Up
case 39: // Right
case 40: // Down
break;
default:
doSearch();
}
});
Ich möchte, dass meine doSearch()
Funktion auch ausgelöst wird, wenn ich die BackspaceTaste drücke. Im Moment passiert absolut nichts, wenn ich Backspacein Chrome und Safari drücke .
irgendwelche Ideen?
Antworten:
Verwenden Sie
keyup
anstelle vonkeypress
. Dies erhält alle Schlüsselcodes, wenn der Benutzer etwas drücktquelle
keyup
für Backspace gefeuert werden, wenn dieskeypress
nicht der Fall ist?keypress
fürEnter
Schlüssel,keydown
fürBackspace
und so weiter verwenden; Andernfalls funktionieren Ihre Ereignisse in einigen Browsern nicht wie erwartet, insbesondere wenn Sie das Standardverhalten für den Schlüssel verhindern möchten. Wenn Sie das falsche verwenden, wird entweder Ihr Ereignis überhaupt nicht erfasst (wie dies bei Backspace der Fall ist) oder Sie können es nicht verhindern. da es bereits passiert, bevor Ihr Ereignisbehandlungscode darauf gelangt.keyup
wird das Zahlenfeld brechen . Kennen Sie eine Antwort, mit der Sie eine Taste auf einer vollständigen Tastatur korrekt erkennen können?keydown
ist die bessere Option für alle SchlüsselIch bin selbst darauf gestoßen. Ich habe es benutzt,
.on
damit es ein bisschen anders aussieht, aber ich habe das gemacht:Hier meine Arbeit hinzufügen. Ich musste ssn löschen, das vom Benutzer eingegeben wurde, also tat ich dies in jQuery
quelle
Wenn Sie das Ereignis nur bei Änderungen Ihrer Eingabe auslösen möchten, verwenden Sie:
quelle
input
beobachtet auch keine keyCodes. Das würde auch nicht funktionieren.Gemäß der jQuery-Dokumentation für .keypress () werden keine nicht druckbaren Zeichen abgefangen, sodass die Rücktaste beim Tastendruck nicht funktioniert, aber bei Keydown und Keyup:
In einigen Fällen ist ein Keyup nicht erwünscht oder hat andere unerwünschte Auswirkungen, und Keydown ist ausreichend. Eine Möglichkeit, dies zu handhaben, besteht darin
keydown
, alle Tastenanschläge abzufangen und dann eine Zeitüberschreitung für ein kurzes Intervall festzulegen, damit der Schlüssel eingegeben wird, und dann die Verarbeitung durchzuführen danach.quelle