Ich möchte erfassen, ob Änderungen vorgenommen wurden <textarea>
. Zum Beispiel das Eingeben von Zeichen (Löschen, Rücktaste) oder das Klicken und Einfügen oder Ausschneiden mit der Maus. Gibt es ein jQuery-Ereignis, das für all diese Ereignisse ausgelöst werden kann?
Ich habe versucht, das Ereignis zu ändern, aber es löst den Rückruf erst aus, nachdem die Komponente verlassen wurde.
Verwendung : Ich möchte eine Schaltfläche aktivieren, wenn a <textarea>
Text enthält.
javascript
jquery
jquery-ui
Lolly
quelle
quelle
Antworten:
Versuchen Sie dies tatsächlich:
DEMO
Das funktioniert für alle Änderungen, die Sie vornehmen, tippen, ausschneiden, einfügen.
quelle
propertychange
gibt, gibt es auchinput
<input type="text">
nicht<textarea>
bind
ist veraltet. Verwendungon
:Hinweis: Der obige Code wird mehrmals ausgelöst, einmal für jeden passenden Triggertyp. Gehen Sie dazu folgendermaßen vor:
jsFiddle Demo
quelle
on("change", function() ....
Teil funktioniert nicht für mich. Löst keine Warnungen oder Konsolenprotokolle aus. Denn Keyup funktioniert allerdings wie ein Zauber.on("change", function() ...
wird nur ausgelöst, wenn der Textbereich den Fokus verliert . Lesen Sie dazu meine frühere Frage und probieren Sie sie an dieser Geige aus - ändern Sie den Textbereich, klicken Sie dann außerhalb des Textbereichs, und Sie sollten sehen, wie das Änderungsereignis ausgelöst wird.Verwenden Sie ein
input
Ereignis.quelle
Diese Frage musste mit Quellen aktueller beantwortet werden. Dies ist, was tatsächlich funktioniert (obwohl Sie nicht mein Wort dafür nehmen müssen):
1: https://developer.mozilla.org/en-US/docs/Web/Events/input#Browser_compatibility
2: Ein Eingang in IE9 wird nicht ausgelöst, wenn wir auf BACKSPACE / DEL / do CUT
3 klicken : https: // msdn .microsoft.com / de-de / library / ms536956 (v = vs.85) .aspx
4: http://api.jquery.com/prop/#prop-propertyName-function
ABER für eine globalere Lösung, die Sie in Ihrem gesamten Projekt verwenden können , empfehle ich die Verwendung des Textchange jQuery-Plugins , um ein neues, browserübergreifendes
textchange
Ereignis zu erhalten. Es wurde von derselben Person entwickelt , die das entsprechendeonChange
Ereignis für Facebooks ReactJS implementiert hat, das sie für fast ihre gesamte Website verwenden. Und ich denke, es ist sicher zu sagen, wenn es eine ausreichend robuste Lösung für Facebook ist, ist es wahrscheinlich robust genug für Sie. :-)UPDATE: Wenn Sie Funktionen wie Drag & Drop-Unterstützung in Internet Explorer benötigen, sollten Sie stattdessen die
pandell
kürzlich aktualisierte Abzweigung vonjquery-splendid-textchange
überprüfen .quelle
2018 ohne JQUERY
Die Frage ist bei JQuery, es ist nur zu Ihrer Information.
JS
HTML
quelle
Hier ist eine andere (moderne), aber etwas andere Version als die zuvor genannten. Getestet mit IE9:
Für veraltete Browser können Sie auch
selectionchange
und hinzufügenpropertychange
(wie in anderen Antworten erwähnt). Hatselectionchange
aber in IE9 bei mir nicht funktioniert. Deshalb habe ich hinzugefügtkeyup
.quelle
Versuchen Sie es mit Focusout
quelle
Versuche dies ...
quelle
.delegate ist die einzige, die mit jQuery JavaScript Library v2.1.1 für mich funktioniert
quelle
Nach einigen Experimenten kam ich auf diese Implementierung:
Behandelt Änderungen an jeder Art von Eingabe und Auswahl sowie Textbereiche, bei denen Pfeiltasten und Dinge wie Strg, Cmd, Funktionstasten usw. ignoriert werden.
Hinweis: Ich habe dies nur in FF versucht, da es sich um ein FF-Add-On handelt.
quelle
Versuche dies
quelle
$("#textarea").on('change keyup paste', function() {})
und angehen$('textarea').trigger('change');
kann, das verhindert, dass espaste
automatisch funktioniert!