Javascript, Schlüssel drücken Wert ist immer ein Zeichen hinter dem neuesten?

7

Wenn ich 'St' schreibe, bis ich t drücke, wenn ich die Eingabe von textfield.value in den Funktionen onkeypress / onkeydown ausgabe, bekomme ich nur 'S'.

Warum ist das? Wie kann ich diese Verzögerung loswerden?

    
Tom 17.08.2010, 13:14
quelle

3 Antworten

11

verwenden Sie das keyup -Ereignis anstelle von keypress . keydown zeigt den Before-Keystroke-Wert an, ebenso wie keypress (anscheinend).

    
lincolnk 17.08.2010 13:17
quelle
8

Innerhalb des keypress -Ereignisses ist es immer noch möglich, die Registrierung des eingegebenen Zeichens zu verhindern, sodass der Wert der Eingabe erst nach dem keypress -Ereignis aktualisiert werden kann. Sie können stattdessen das Ereignis keyup verwenden oder window.setTimeout() verwenden, um eine Verzögerung einzurichten.

    
Tim Down 17.08.2010 13:22
quelle
0

Weil der Tastendruck erst registriert wird, wenn das Keyup-Ereignis eintritt. Daher sollten Sie onkeyup event statt onkeypress erkennen.

    
NawaMan 17.08.2010 13:20
quelle