Mam:
$(someTextInputField).keypress(function() {
alert($(this).val());
});
Teraz alert zawsze zwraca wartość PRZED naciśnięciem klawisza (np. Pole jest puste, wpisuję „a” i alert daje mi „”. Następnie wpisuję „b”, a alert daje mi „a” ...). Ale chcę mieć wartość PO naciśnięciu klawisza - jak mogę to zrobić?
Tło: Chciałbym włączyć przycisk, gdy tylko pole tekstowe zawiera co najmniej jeden znak. Więc uruchamiam ten test dla każdego zdarzenia naciśnięcia klawisza, ale używając zwróconej wartości val (), wynik jest zawsze o jeden krok za. Użycie zdarzenia change () nie jest dla mnie opcją, ponieważ przycisk jest wówczas wyłączony, dopóki nie opuścisz pola tekstowego. Jeśli istnieje lepszy sposób na zrobienie tego, cieszę się, że to słyszę!
javascript
jquery
events
forms
javascript-events
Jörg Brenninkmeyer
źródło
źródło
Odpowiedzi:
Zmień
keypress
nakeyup
:keypress
jest uruchamiany po naciśnięciu klawisza,keyup
jest uruchamiany po zwolnieniu klawisza.źródło
Zaskoczony, że nikt nie wspomniał o zdarzeniu js „input”:
Zalecana.
https://developer.mozilla.org/en-US/docs/Web/Events/input
źródło
zamiast klawisza użyj keyup .
źródło
Alternatywnie możesz użyć zdarzenia keydown z limitem czasu równym 0.
W ten sposób zmiany zostaną zastosowane natychmiast, a nie, gdy użytkownik przestanie trzymać klawisz.
źródło
Możesz chcieć podłączyć
onchange
procedurę obsługi zdarzeń zamiast używać któregokolwiek z kluczowych zdarzeń.Użycie
Edit > Paste
lub Kliknięcie prawym przyciskiem myszy, a następnie Wklejanie spowoduje uruchomienie zdarzenia zmiany, ale nie zdarzenia kluczowego. Zauważ, że niektóre przeglądarki mogą symulować kluczowe zdarzenie na wklejce (chociaż nie znam żadnego), ale nie możesz liczyć na takie zachowanie.źródło
Spróbuj czegoś takiego:
To po prostu wprowadza limit czasu, dzięki czemu po zakończeniu pętli zdarzenia „naciśnięcie klawisza” Twój kod zostanie uruchomiony niemal natychmiast po tym. Tak krótki interwał timera (nawet zaokrąglony przez przeglądarkę) nie będzie zauważalny.
edit - albo mógł użyć „keyUp” jak każdy inny mówi, chociaż jego semantyka są różne.
źródło