Cómo lidiar con las diferencias del navegador con casilla de verificación indeterminada

Cebador: Una casilla de verificación HTML se puede establecer comoindeterminate, que lo muestra como ni marcado ni sin marcar. Incluso en este estado indeterminado, todavía hay un booleano subyacentechecked estado.

Cuando se hace clic en una casilla de verificación indeterminada, pierde suindeterminate estado. Dependiendo del navegador (Firefox), también puede alternar lachecked propiedad.

Este jsfiddle ilustra la situación. En Firefox, hacer clic en cualquiera de las casillas de verificación una vez hace que cambien su inicial subyacentechecked estado. En IE, elchecked La propiedad se queda sola para el primer clic.

Me gustaría que todos los navegadores se comporten igual, incluso si esto significa javascript adicional. Desafortunadamente, elindeterminate la propiedad se establece en falsoantes de laonclick manejador (oonchange y jQuerychange) se llama, así que no puedo detectar si se llama para hacer clic en unindeterminate casilla de verificación o no.

losmouseup ykeyup (para la barra espaciadora) los eventos muestran el anteriorindeterminate Estado, pero prefiero no ser tan específico: parece frágil.

Podría mantener una propiedad separada en la casilla de verificación (data-indeterminate o similar), pero quería saber si hay una solución simple que me falta y / o si otras personas tienen problemas similares.

Respuestas a la pregunta(4)

Su respuesta a la pregunta