Como lidar com as diferenças do navegador com checkbox indeterminado
Primer: Uma caixa de seleção de HTML pode ser definida comoindeterminate
, que o exibe como nem verificado nem desmarcado. Mesmo neste estado indeterminado, ainda existe um valor booleano subjacentechecked
Estado.
Quando uma caixa de seleção indeterminada é clicada, ela perdeindeterminate
Estado. Dependendo do navegador (Firefox), ele também pode alternarchecked
propriedade.
Este jsfiddle ilustra a situação. No Firefox, clicar em uma das caixas de seleção uma vez faz com que alternem a inicial subjacentechecked
Estado. No IE, ochecked
a propriedade é deixada sozinha para o primeiro clique.
Eu gostaria que todos os navegadores se comportassem da mesma forma, mesmo que isso significasse javascript adicional. Infelizmente, oindeterminate
a propriedade está definida como falsaantes aonclick
manipulador (ouonchange
e jquerychange
) é chamado, então eu não posso detectar se é chamado por um clique em umindeterminate
caixa de seleção ou não.
omouseup
ekeyup
(para alternar barra de espaços) os eventos mostramindeterminate
estado, mas eu prefiro não ser tão específico: parece frágil.
Eu poderia manter uma propriedade separada na caixa de seleção (data-indeterminate
ou similar), mas eu queria saber se há uma solução simples que está faltando e / ou se outras pessoas estão tendo problemas semelhantes.