2010-08-17 17 views

Odpowiedz

11

użyć zdarzenia keyup zamiast keypress. keydown wyświetli wartość przed naciśnięciem klawisza, podobnie jak keypress (podobno).

+2

Dziwne, że @Tom sugeruje, że próbowałeś już "onkeyup"? – MrWhite

+1

Proponuję, żeby nie był wtedy wypróbowany prawidłowo. –

+3

* KeyUp * zostanie uruchomiony dopiero po zwolnieniu klawisza, nie zostanie uruchomiony z powodu wielokrotnych naciśnięć klawiszy. Jeśli więc przytrzymasz klawisz, aby wprowadzić więcej niż jedną z tych samych postaci, keyup nie uruchomi się, dopóki klucz nie zostanie zwolniony. –

0

Ponieważ naciśnięcie klawisza nie jest rejestrowane do momentu wystąpienia zdarzenia kluczowania. Więc powinieneś wykryć zdarzenie onkeyup zamiast onkeypress.

8

Wewnątrz zdarzenia keypress nadal można zapobiec wpisywaniu wpisywanego znaku, dlatego wartość wejściowa nie może zostać zaktualizowana przed wydarzeniem keypress. Zamiast tego możesz użyć zdarzenia keyup lub ustawić window.setTimeout(), aby ustawić opóźnienie.

+0

+1 dla * window.setTimeout() *, użycie opóźnienia 0ms wystarczy, aby kod został wykonany natychmiast po zaktualizowaniu danych wejściowych. –

+0

@Andy: Bardzo fajna wskazówka. Działa w (prawie) każdej przeglądarce? –

+1

@Marcel: będzie działać tak samo w każdej przeglądarce. Polecam lekturę Resig'a J [Jak działają timery JavaScript] (http://ejohn.org/blog/how-javascript-timers-work/), aby uzyskać więcej szczegółowych informacji na ten temat. –

Powiązane problemy