Tengo un campo de texto oculto cuyo valor se actualiza a través de una respuesta AJAX.
<input type="hidden" value="" name="userid" id="useid" />
Cuando este valor cambia, me gustaría disparar una solicitud AJAX. ¿Alguien puede aconsejar sobre cómo detectar el cambio?
Tengo el siguiente código, pero no sé cómo buscar el valor:
$('#userid').change( function() {
alert('Change!');
})
Respuestas:
Así que esto es demasiado tarde, pero he descubierto una respuesta, en caso de que sea útil para cualquiera que se encuentre con este hilo.
Los cambios en el valor de los elementos ocultos no activan automáticamente el evento .change (). Entonces, donde sea que esté estableciendo ese valor, también debe decirle a jQuery que lo active.
Una vez que ese sea el caso,
Debería funcionar como se esperaba.
fuente
.trigger()
generalmente mejor usarlo solo con solo llamarchange()
?change
evento, debe agregar el códigosetUserID()
para verificar si el valor realmente cambia o no.if ($('#userid').val() != myVaule) { // set val() and trigger change }
Como la entrada oculta no activa el evento "change" en el cambio, utilicé MutationObserver para activar esto.
(A veces, algunos otros scripts que no puede modificar modifican los valores de entrada ocultos)
Esto no funciona en IE10 y versiones inferiores
fuente
input[type=hidden]
trigger('change')
, no funcionó para mí, así que creé un CustomEvent, lo registré y luegoelement.dispatchEvent(myCustomEvent)
Simplemente puede usar la siguiente función, También puede cambiar el elemento de tipo.
Los cambios en el valor de los elementos ocultos no activan automáticamente el evento .change (). Entonces, donde sea que esté estableciendo ese valor, también debe decirle a jQuery que lo active.
HTML
JAVASCRIPT
Debería funcionar como se esperaba.
http://jsfiddle.net/7CM6k/3/
fuente
fuente
Es posible usarlo
Object.defineProperty()
para redefinir la propiedad 'value' del elemento de entrada y hacer cualquier cosa durante su cambio.Object.defineProperty()
nos permite definir un getter y setter para una propiedad, controlando así.https://jsfiddle.net/bvvmhvfk/
fuente
Este ejemplo devuelve el valor del campo borrador cada vez que el campo borrador oculto cambia su valor (navegador Chrome):
fuente
A partir de la respuesta de Viktar , aquí hay una implementación que puede llamar una vez en un elemento de entrada oculto dado para garantizar que se active el evento de cambio posterior cada vez que cambie el valor del elemento de entrada:
Llame a esto en el documento listo así:
fuente
Aunque este hilo tiene 3 años, aquí está mi solución:
fuente