Solución/Solución
Usando jQuery He arreglado el problema como este:
this.checkboxes = $('input[type="checkbox"]');
if (navigator.userAgent.match(/MSIE/i)){
this.checkboxes.dblclick(function() {
if($(this).prop('checked')) {
$(this).prop('checked', false);
} else {
$(this).prop('checked', true);
}
});
}
this.checkboxes.click(function(e) {
// do whatever a click should do
});
Explicación: En un doble clic en Internet Explorer, los eventos se activan como esto:
- Haga clic en
- Haga clic en
- D ouble Haga clic en
Con un doble clic, la acción deseada en mi evento de clic ocurrió dos veces (como debería), pero la casilla de verificación no cambió los estados dos veces. Así que simplemente alteré el estado marcado/no verificado nuevamente cuando se dispara un doble clic. Como esto rompería la funcionalidad en Firefox/Chrome/etc, solo lo usé en los agentes de usuario de MSIE (Internet Explorer).
Con el código anterior, el fuego eventos y casillas de verificación-unidos/cambio como éste:
doble clic en todos los navegadores excepto IE:
- Click (cambio de estado, el fuego de eventos de clic)
- click (cambiar de estado, el fuego de eventos de clic)
doble clic en una casilla de verificación en Internet Explorer
- Click (cambio de estado, el fuego de eventos de clic)
- Click (fuego evento de clic)
- doble click (cambio de estado (a través del evento de doble clic))
vuelta en el día había una opción "detectar doble clics accidentales" enterrados en cualquiera de las opciones de IE o el explorador, podría ser que –
¿Conoce si esta opción ya existe? –
la respuesta actual se ve bien ... si necesita una solución alternativa, publique algún código o cuál es su objetivo. ¿Usas JQuery? ¿Qué pasa con el doble clic ...? –