Como se ha dicho en los duplicados, y como se vio, los cambios hecho en javascript Don' t desencadenar el evento change
.
Como no encontré respuestas aceptables en los duplicados (es decir, las respuestas no implican un cambio en la forma en que se establece el valor oculto), y suponiendo que realmente necesita ese (es decir, no puede llamar a su función cuando cambia el val entrada oculta), esto es lo que podría hacer:
function survey(selector, callback) {
var input = $(selector);
var oldvalue = input.val();
setInterval(function(){
if (input.val()!=oldvalue){
oldvalue = input.val();
callback();
}
}, 100);
}
survey('#id_inpout', function(){console.log('changed')});
Pero yo usaría preferiblemente un soluciones más directas (es decir, llamar a una función cuando cambia el valor de entrada oculta). Esta función puede ser un simple despachador de eventos propio (básicamente un objeto que envuelve una lista de funciones para llamar cuando se llama).
EDIT: Ahora es 2015 y para la gente que se pregunta, no, ninguno de los avances recientes del mundo de la web resuelve ese problema. Los observadores de mutaciones no observan la propiedad de valor de la entrada (en realidad no es el DOM) y el observador de objetos ES6 tampoco tiene poder para esos objetos nativos.
duplicar? http://stackoverflow.com/questions/6533087/jquery-detect-value-change-on-hidden-input-field – max4ever
Pero ninguna de las respuestas de la otra pregunta es aceptable ... Incluso el votado por encima implica llamar al disparando explícitamente ... –
¿Qué tal esta respuesta? http://stackoverflow.com/questions/1003053/does-html-hidden-control-have-any-events-like-onchange-or-something – palmplam