Consideremos el siguiente código (http://jsfiddle.net/FW36F/1/):desencadenar un evento en input.checked = true false _without_/jQuery
<input type="checkbox" onchange="alert(this.checked)">
<button onclick="document.getElementsByTagName('input')[0].checked=!document.getElementsByTagName('input')[0].checked;">toggle</button>
Si hace clic en la casilla de verificación, aparece una alerta que le dice si está marcada o no. Estupendo. Sin embargo, si hace clic en el botón para alternar, la casilla de verificación cambia el estado de verificación pero el evento onchange NO se activa.
Esencialmente, el cambio de una casilla de verificación solo se activa si el usuario realmente hace clic en la casilla de verificación, no si la casilla de verificación se cambia mediante JavaScript. Esto es cierto en IE, FF y Chrome. Parece que este comportamiento también es específico.
Sin embargo, realmente necesito algún tipo de evento para disparar si, por alguna razón, el estado de verificación de la casilla de verificación cambia. es posible?
Ah sí, y jQuery no está permitido. Y por favor no soluciones basadas en setTimeout/setInterval tampoco ...
Actualización: Además, debo dejar en claro que el código anterior es sólo para ilustración. En el código real, necesitamos asegurarnos de que el estado de la casilla de verificación esté marcada o desmarcada, no solo alternarla. Tal vez esto sería mejor código para ilustrar que:
<input type="checkbox" onchange="alert(this.checked)">
<button onclick="document.getElementsByTagName('input')[0].checked=true;">check</button>
<button onclick="document.getElementsByTagName('input')[0].checked=false;">un check</button>
Por otra parte, puede haber código en otras áreas no lo hacemos totalmente el control, lo que podría hacer una simple .checked = verdadero/falso - nos gustaría para asegurarnos de que vemos eso también.
jQuery habría No dispare el evento de cambio nativa, basta con situar su valor –
¿Qué pasa con los tiempos de espera? No creo que haya nada más que funcione. – Jivings
@Jivings: No puedo creer que hayas preguntado qué pasa con las encuestas al usar un tiempo de espera. Es como tirar ciclos de distancia y agregar un retraso a la notificación. Cuanto menos demora, más perderá ciclos de CPU. Aquí hay muchas respuestas que satisfacen los requisitos del OP –