Je veux capturer si des changements sont survenus <textarea>
. Comme taper des caractères (suppression, retour arrière) ou cliquer et coller ou couper avec la souris. Y a-t-il un événement jQuery qui peut se déclencher pour tous ces événements?
J'ai essayé de changer d'événement, mais il ne déclenche le rappel qu'après tabulation du composant.
Utilisation : Je souhaite activer un bouton si a <textarea>
contient du texte.
Réponses:
Essayez ceci en fait:
DEMO
Cela fonctionne pour toutes les modifications que vous apportez, en tapant, en coupant, en collant.
la source
propertychange
cas aussiinput
<input type="text">
, pas<textarea>
bind
est obsolète. Utilisationon
:Remarque: Le code ci-dessus se déclenchera plusieurs fois, une fois pour chaque type de déclencheur correspondant. Pour gérer cela, faites quelque chose comme ceci:
jsFiddle Demo
la source
on("change", function() ....
partie ne fonctionne pas pour moi. Ne déclenche aucune alerte, ni journaux de console, quoi que ce soit. Pour les touches, cependant, cela fonctionne comme un charme.on("change", function() ...
n'est déclenché que lorsque la zone de texte perd le focus . Référez-vous à ma question précédente pour cela, et essayez-la sur ce violon - changez la zone de texte, puis cliquez en dehors de la zone de texte, et vous devriez voir le changement d'événement se déclencher.Utilisez un
input
événement.la source
Cette question avait besoin d'une réponse plus à jour, avec des sources. C'est ce qui fonctionne réellement (bien que vous n'ayez pas à me croire sur parole):
1: https://developer.mozilla.org/en-US/docs/Web/Events/input#Browser_compatibility
2: oninput dans IE9 ne se déclenche pas lorsque nous frappons 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
MAIS, pour une solution plus globale que vous pouvez utiliser tout au long de votre projet , je recommande d'utiliser le plugin jcery textchange pour obtenir un nouvel
textchange
événement compatible avec tous les navigateurs . Il a été développé par la même personne qui a mis en œuvre l'équivalentonChange
événement pour ReactJS de Facebook, qu'ils utilisent pour presque tout leur site Web. Et je pense qu'il est sûr de dire que si c'est une solution suffisamment robuste pour Facebook, elle est probablement assez robuste pour vous. :-)MISE À JOUR: Si vous avez besoin de fonctionnalités telles que la prise en charge du glisser-déposer dans Internet Explorer, vous souhaiterez peut-être consulter
pandell
la dernière version mise à jour de fork dejquery-splendid-textchange
.la source
2018, sans JQUERY
La question est avec JQuery, c'est juste FYI.
JS
HTML
la source
Voici une autre version (moderne) mais légèrement différente de celles mentionnées précédemment. Testé avec IE9:
Pour les navigateurs obsolètes, vous pouvez également ajouter
selectionchange
etpropertychange
(comme mentionné dans d'autres réponses). Maisselectionchange
n'a pas fonctionné pour moi dans IE9. C'est pourquoi j'ai ajoutékeyup
.la source
Essayez de le faire avec focusout
la source
essaye ça ...
la source
.delegate est le seul qui fonctionne pour moi avec jQuery JavaScript Library v2.1.1
la source
Après quelques expérimentations, j'ai trouvé cette implémentation:
Gère les modifications de tout type d'entrée et sélectionne ainsi que les zones de texte en ignorant les touches fléchées et des choses comme ctrl, cmd, touches de fonction, etc.
Remarque: je n'ai essayé cela que dans FF car c'est pour un add-on FF.
la source
Essaye ça
la source
$("#textarea").on('change keyup paste', function() {})
et$('textarea').trigger('change');
peut résoudre le problème qui empêchepaste
de travailler automatiquement!