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.