Come posso bind all’evento di modifica di una textarea in jQuery?

Voglio catturare se sono avvenute modifiche a

Ecco un’altra versione (moderna) ma leggermente diversa da quelle menzionate in precedenza. Testato con IE9:

 $('#textareaID').on('input change keyup', function () { if (this.value.length) { // textarea has content } else { // textarea is empty } }); 

Per i browser obsoleti si potrebbe anche aggiungere selectionchange e propertychange (come menzionato in altre risposte). Ma selectionchange non ha funzionato per me in IE9. Ecco perché ho aggiunto la keyup .

Prova a farlo con focusout

 $("textarea").focusout(function() { alert('textarea focusout'); }); 

prova questo …

 $("#txtAreaID").bind("keyup", function(event, ui) { // Write your code here }); 

.delegate è l’unico che mi sta lavorando con jQuery JavaScript Library v2.1.1

  $(document).delegate('#textareaID','change', function() { console.log("change!"); }); 

Dopo alcuni esperimenti sono arrivato a questa implementazione:

 $('.detect-change') .on('change cut paste', function(e) { console.log("Change detected."); contentModified = true; }) .keypress(function(e) { if (e.which !== 0 && e.altKey == false && e.ctrlKey == false && e.metaKey == false) { console.log("Change detected."); contentModified = true; } }); 

Gestisce le modifiche a qualsiasi tipo di input e seleziona così come i textareas ignorano i tasti freccia e cose come ctrl, cmd, tasti funzione, ecc.

Nota: l’ho provato solo in FF poiché è per un componente aggiuntivo FF.

Prova questo

  $('textarea').trigger('change'); $("textarea").bind('cut paste', function(e) { });