evento de cambio de cuadro de texto jQuery

¿El elemento de entrada de texto no tiene un evento de cambio? Cuando adjunto un controlador de eventos de cambio a una entrada de texto, no se está activando. Keyup se activa, pero keyup no es suficiente para detectar un cambio, ya que obviamente hay otras formas de ingresar texto en una entrada.

La especificación HTML4 para el elemento especifica que los siguientes eventos de script están disponibles:

onfocus, onblur, onselect, onchange, onclick, ondblclick, onmousedown, onmouseup, onmouseemover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

Aquí hay un ejemplo que se une a todos estos eventos y muestra lo que sucede en http://jsfiddle.net/pxfunc/zJ7Lf/

Creo que puede filtrar qué eventos son realmente relevantes para su situación y detectar cuál fue el valor del texto antes y después del evento para determinar un cambio

He encontrado que esto funciona:

 $(document).ready(function(){ $('textarea').bind('input propertychange', function() { //do your update here } }) 

El evento de cambio solo se dispara después de que la entrada pierde el enfoque (y se cambió).

No hay una solución real para esto, incluso en los enlaces a otras preguntas que se mencionaron anteriormente. ¡Al final he decidido usar setTimeout y llamar a un método que comprueba cada segundo! No es una solución ideal, pero una solución que funciona y el código al que estoy llamando es lo suficientemente simple como para no tener un efecto en el rendimiento al ser llamado todo el tiempo.

 function InitPageControls() { CheckIfChanged(); } function CheckIfChanged() { // do logic setTimeout(function () { CheckIfChanged(); }, 1000); } 

Espero que esto ayude a alguien en el futuro, ya que parece que no hay una manera segura de lograrlo utilizando controladores de eventos …

Lo puedes lograr:

  $(document).ready(function(){ $('#textBox').keyup(function () {alert('changed');}); }); 

o con el cambio (manejar copiar copiar con el botón derecho):

  $(document).ready(function(){ $('#textBox2').change(function () {alert('changed');}); }); 

Aquí está la demo

 $('#input').on("input",function () {alert('changed');}); 

funciona para mi.