Estaba buscando una solución como esta que activaría sin que el usuario tenga que abandonar el elemento, pero que funcionaría para todos los casos, incluidos los identificados por Jakub en su publicación. Es decir.
- escritura normal
- pegar a través del ratón
- autocompletar
También idealmente quería una solución jQuery como yo estaba usando varios selectores de jQuery, etc y no quería la molestia de "desenvolver" mi jQuery se opone para llegar al elemento DOM.
yo fuimos para una solución utilizando 3 eventos diferentes factores desencadenantes - ver los comentarios en el ejemplo de código para qué:
var valuechanged = function() {
// do something
};
var inputtowatch = $('.selector');
inputtowatch.on('input', valuechanged);
inputtowatch.on('keyup', valuechanged); // input event is buggy and doesn't catch delete/backspace in IE, but can't just use keyup alone as that doesn't catch paste and automcomplete
inputtowatch.on('propertychange', valuechanged); // input event not supported in IE < 9
que espera que el uso de múltiples eventos como esto podría resultar en la función de ser disparado varias veces . En mi prueba en Firebug, eso no sucedió. Sin embargo, estaba en la afortunada posición de no importarme si la función funcionaba "demasiadas veces" y por lo tanto no probaba más este aspecto en particular (por ejemplo, otros navegadores).
Ver [$ ("# some-input") .changePolling()] (https://gist.github.com/2944926); para un contenedor que comprueba el valor actual y desencadena '.change()' si ha cambiado. –