Обходной путь / Решение
Используя jQuery, я исправил проблему следующим образом:
this.checkboxes = $('input[type="checkbox"]');
if (navigator.userAgent.match(/MSIE/i)){
this.checkboxes.dblclick(function() {
if($(this).prop('checked')) {
$(this).prop('checked', false);
} else {
$(this).prop('checked', true);
}
});
}
this.checkboxes.click(function(e) {
// do whatever a click should do
});
Пояснение:
При двойном щелчке в Internet Explorer события запускаются так:
- Нажмите
- Нажмите
- Двойной щелчок
При двойном щелчке желаемое действие в моем событии щелчка происходило дважды (как и должно быть), но флажок не менял состояния дважды. Так что я просто переключал проверенное / непроверенное состояние снова, когда срабатывает двойной щелчок. Поскольку это нарушило бы функциональность Firefox / Chrome / etc, я использовал его только в пользовательских агентах MSIE (Internet Explorer).
С кодом выше события и состояния флажков запускаются / изменяются следующим образом:
Двойной клик во всех браузерах, кроме IE:
- Нажмите (изменить состояние, событие щелчка огня)
- Нажмите (изменить состояние, событие щелчка огня)
Двойной щелчок на флажке в Internet Explorer
- Нажмите (изменить состояние, событие щелчка огня)
- Click (событие пожара)
- Двойной щелчок (изменение состояния (с помощью события двойного щелчка))