2008-12-11 12 views
12

Si hago jQuery (expr) .change (función), entonces puedo hacer que una función de evento se active cuando el usuario hace un cambio en el valor.JQuery detección Evento de cambio de programa

Es posible hacer que esto se dispare si se cambia programáticamente, es decir, si llamo a jQuery (expr) .val ("moo").

o si algún viejo JavaScript antiguo cambia su valor?

Gracias por cualquier ayuda.

Respuesta

15

Después de cambiar el valor, puede desencadenar el evento usted mismo y llamar así a todos los controladores 'onchange'.

jQuery('#element').change(); 
+0

¡Perfecto! Exactamente lo que estaba buscando. – neminem

5

Cambiar el valor directamente en JS no se engancha en nada que jQuery pueda escuchar para desencadenar el evento de cambio. Como dice Sander, puedes disparar el manejador de eventos tú mismo. Si no tiene control sobre otro código que modifica estos valores y esa no es una opción, no tiene suerte. La única otra opción que podría funcionar sería que un observador vea el valor en un intervalo usando setTimeout, lo cual es realmente complicado y probablemente no sea una buena idea.

+0

Todavía es la única opción a veces. Estoy de acuerdo en que es desordenado, pero no debería causar problemas siempre que elija un intervalo grande (500 ms está bien en mi experiencia). –

1

jQuery v1 + admite la activación programática de manejadores: he utilizado este método en comparación con el método .change() ya que permite disparar otros muchos manejadores si es necesario (por ejemplo, algunos manejadores personalizados). API Documentation es en: http://api.jquery.com/trigger/

Cuestiones relacionadas