Chcę uchwycić, jeśli nastąpiły jakieś zmiany <textarea>
. Podobnie jak pisanie dowolnych znaków (usuwanie, cofanie) lub klikanie myszką i wklejanie lub wycinanie. Czy istnieje zdarzenie jQuery, które może być wyzwalane dla wszystkich tych zdarzeń?
Próbowałem zmienić zdarzenie, ale wyzwala on wywołanie zwrotne dopiero po tabulacji z komponentu.
Użyj : Chcę włączyć przycisk, jeśli <textarea>
zawiera dowolny tekst.
javascript
jquery
jquery-ui
Lolly
źródło
źródło
Odpowiedzi:
Wypróbuj to w rzeczywistości:
PRÓBNY
Działa to w przypadku wszelkich wprowadzanych zmian, pisania, wycinania, wklejania.
źródło
propertychange
nie mainput
<input type="text">
, a nie<textarea>
bind
jest przestarzałe. Użyjon
:Uwaga: powyższy kod będzie uruchamiany wiele razy, raz dla każdego pasującego typu wyzwalacza. Aby sobie z tym poradzić, wykonaj coś takiego:
jsFiddle Demo
źródło
on("change", function() ....
część nie pracuje dla mnie. Nie wyzwala żadnego alertu, ani logów konsoli, niczego. Jednak keyup działa jak urok.on("change", function() ...
Jest uruchamiany tylko wtedy, gdy obszar tekstowy przestaje być aktywny . Zapoznaj się z moim wcześniejszym pytaniem i wypróbuj to na tym skrzypcach - zmień obszar tekstowy, a następnie kliknij poza obszarem tekstowym, a powinieneś zobaczyć uruchamianie zdarzenia zmiany.Użyj
input
wydarzenia.źródło
To pytanie wymagało bardziej aktualnej odpowiedzi ze źródłami. Oto, co faktycznie działa (choć nie musisz mi wierzyć na słowo):
1: https://developer.mozilla.org/en-US/docs/Web/Events/input#Browser_compatibility
2: oninput w IE9 nie uruchamia się po uderzeniu w BACKSPACE / DEL / do CUT
3: https: // msdn .microsoft.com / en-us / library / ms536956 (v = vs.85) .aspx
4: http://api.jquery.com/prop/#prop-propertyName-function
ALE, aby uzyskać bardziej globalne rozwiązanie, z którego można korzystać w całym projekcie , zalecam użycie wtyczki textchange jQuery w celu uzyskania nowego
textchange
zdarzenia zgodnego z różnymi przeglądarkami . Został opracowany przez tę samą osobę, która zaimplementowała równoważneonChange
wydarzenie dla ReactJS na Facebooku, którego używają w prawie całej swojej witrynie. I myślę, że można powiedzieć, że jeśli jest wystarczająco solidnym rozwiązaniem dla Facebooka, to prawdopodobnie jest wystarczająco solidny dla Ciebie. :-)AKTUALIZACJA: Jeśli potrzebujesz funkcji takich jak obsługa przeciągania i upuszczania w Internet Explorerze, możesz zamiast tego sprawdzić
pandell
najnowszą wersjęjquery-splendid-textchange
.źródło
2018, bez JQUERY
Pytanie jest z JQuery, to po prostu FYI.
JS
HTML
źródło
Oto kolejna (nowoczesna), ale nieco inna wersja niż te wspomniane wcześniej. Testowane z IE9:
W przypadku przestarzałych przeglądarek możesz również dodać
selectionchange
ipropertychange
(jak wspomniano w innych odpowiedziach). Aleselectionchange
nie działało dla mnie w IE9. Właśnie dlatego dodałemkeyup
.źródło
Spróbuj zrobić to z focusout
źródło
Spróbuj tego ...
źródło
.delegate jest jedynym, który działa dla mnie z jQuery JavaScript Library v2.1.1
źródło
Po kilku eksperymentach wymyśliłem tę implementację:
Obsługuje zmiany do dowolnego rodzaju danych wejściowych i zaznaczania oraz obszarów tekstowych ignorujących klawisze strzałek i takie rzeczy jak ctrl, cmd, klawisze funkcyjne itp.
Uwaga: próbowałem tego tylko w FF, ponieważ jest to dodatek do FF.
źródło
Spróbuj tego
źródło
$("#textarea").on('change keyup paste', function() {})
i$('textarea').trigger('change');
można rozwiązać problem, który uniemożliwiapaste
automatyczne działanie!