Как справиться с различиями в браузерах с неопределенным флажком

Primer:Флажок HTML может быть установлен как indeterminate, который отображает его как ни отмеченный, ни снятый. Даже в этом неопределенном состоянии все еще существует базовое логическое checkedсостояние.

Mac OS X checkboxes in various states


При выборе неопределенного флажка он теряет свое состояние indeterminate. В зависимости от браузера (Firefox)он может дополнительно переключать свойство checked.

Этот jsfiddle иллюстрирует ситуацию. В Firefox однократное нажатие на любой из флажков приводит к переключению их исходного базового состояния checked. В IE свойство checkedне используется для первого клика.

Я бы хотел, чтобы все браузеры вели себя одинаково, даже если для этого потребуется дополнительный javascript. К сожалению, для свойства indeterminateустановлено значение false перед вызовом обработчика onclick(или onchangeи jquery change), поэтому я не могу определить, вызывается ли он для щелчка на флажке indeterminateили нет.

События mouseupиkeyup(для пробела toggle)показывают предыдущее состояние indeterminate, но я бы не хотел быть таким конкретным:, это кажется хрупким.

Я мог бы сохранить отдельное свойство для флажка(data-indeterminateили аналогичного ), но я хотел знать, есть ли простое решение, которое мне не хватает, и/или есть ли у других людей подобные проблемы.

21
задан aaaidan 4 December 2014 в 02:00
поделиться