Zauważyłem, że zdarzenie zmiany jQuery w polu tekstowym nie jest uruchamiane, dopóki nie kliknę poza polem tekstowym.
HTML:
<input type="text" id="textbox" />
JS:
$("#textbox").change(function() {alert("Change detected!");});
Zobacz demo na JSFiddle
Moja aplikacja wymaga, aby zdarzenie było uruchamiane przy każdej zmianie znaku w polu tekstowym. Próbowałem nawet zamiast tego użyć klucza ...
$("#textbox").keyup(function() {alert("Keyup detected!");});
... ale jest to znany fakt, że zdarzenie keyup nie jest uruchamiane po kliknięciu prawym przyciskiem myszy i wklejeniu.
Jakieś obejście? Czy posiadanie obu słuchaczy spowoduje jakieś problemy?
Odpowiedzi:
Wiązanie się z obydwoma zdarzeniami jest typowym sposobem. Możesz również powiązać się ze zdarzeniem wklejania.
Możesz powiązać wiele wydarzeń, takich jak to:
Jeśli chcesz podejść do tego pedantycznie, powinieneś również ustawić kursor myszy, aby umożliwić przeciąganie tekstu i dodać
lastValue
zmienną, aby upewnić się, że tekst faktycznie się zmienił:A jeśli chcesz być
super duper
pedantyczny, powinieneś użyć timera interwałów, aby zapewnić automatyczne napełnianie, wtyczki itp:źródło
.on('change keyup paste', function() {...}
faktycznie strzela wiele razy! Jeśli wpisałem znak, a następnie kliknąłem na zewnątrz, uruchamiane są zdarzenia „change” i „keyup”, co prowadzi do wielokrotnego wykonywania funkcji! Jeśli kliknąłem prawym przyciskiem myszy, a potem kliknąłem na zewnątrz, uruchamiane są zarówno polecenia „zmień”, jak i „wklej”. Heck! Użycie Ctrl + V do wklejenia, a następnie kliknięcie na zewnątrz uruchamia go trzykrotnie !!lastValue
zmiennej, aby upewnić się, że faktycznie się zmieniła.W nowoczesnych przeglądarkach, można użyć na
input
imprezę :PRÓBNY
źródło
Działa to na pisanie, wklejanie, wklejanie prawym przyciskiem myszy itp.
źródło
HTML:
JS:
źródło
Spróbuj tego:
Zobacz demo na JSFiddle .
źródło
bind()
?keyup
ichange()
ma swoje typowe zachowanie tak id chce wykonać imprezę potempaste
może być opcjabind
zamiaston
.Wypróbuj poniższy kod:
źródło
event to be fired on every character change in the textbox
"...but it's a known fact that the keyup event isn't fired on right-click-and-paste."
Przeczytanie twoich komentarzy doprowadziło mnie do nieprzyjemnej sytuacji. Wiem, że to nie jest właściwy sposób, ale można go obejść.
źródło