Primer: Флажок HTML может быть установлен как indeterminate
, который отображает его как ни проверенный, ни снятый. Даже в этом неопределенном состоянии все еще существует базовое состояние boolean checked
.
При щелчке по неопределенному флажку он теряет состояние indeterminate
. В зависимости от браузера (Firefox) он может дополнительно переключить свойство checked
.
Этот jsfiddle иллюстрирует ситуацию. В Firefox одно нажатие на один из этих флажков заставляет их переключать исходное базовое состояние checked
. В IE свойство checked
оставлено в покое для первого щелчка.
Я бы хотел, чтобы все браузеры ведут себя одинаково, даже если это означает дополнительный javascript. К сожалению, для свойства indeterminate
установлено значение false до того, как вызывается обработчик onclick
(или onchange
и jquery change
), поэтому я не могу определить, вызывал ли он клик на флажке indeterminate
или нет.
События mouseup
и keyup
(для переключения пробела) показывают предыдущее состояние indeterminate
, но я бы предпочел не быть таким специфичным: он кажется хрупким.
Я мог бы сохранить отдельное свойство в флажке (data-indeterminate
или подобное), но я хотел знать, есть ли простое решение, которое мне не хватает, и/или если у других людей возникают подобные проблемы.