Подтвердить что ты не робот

Почему флажок Internet Explorer принимает двойной щелчок, но изменение состояния только один раз?

В Internet Explorer (любая версия), если вы нажмете дважды быстро, установите флажок, который изменяется только один раз. Другие браузеры этого не делают.

Это "по дизайну" или очень странное поведение (ошибка)?

4b9b3361

Ответ 1

В то время как я работал системным администратором во многих разных компаниях, я часто видел, что люди используют doubleclick как действие по умолчанию для взаимодействия с любым элементом пользовательского интерфейса. Первое, что они узнали о Windows, - это то, что doubleclick запускает значок (ярлык). И они применяют это знание ко всем другим элементам, независимо от того, что это на самом деле: ссылка, кнопка, значок или флажок =) Итак, я предполагаю, что он сделал преднамеренно, что IE считает doubleclick как singleclick.

Ответ 3

Обходной путь/решение

С помощью 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

  • Нажмите (изменить состояние, событие клика)
  • Нажмите (событие клика)
  • Двойной щелчок (изменение состояния (через событие двойного щелчка))

Ответ 4

Следующий код работает для меня:

<input type="checkbox"  OnClick ="javascript:toggleGetSelected(this)">

var temp;
function toggleGetSelected(e){
        if(e){

            // Below is the if condition which handles the double click
            if(e.checked==true && temp==e.value ){
                  e.checked=false;
            }
            // ends double click handle


            if(e.checked==true){
                temp=e.value;
                // your code here                       
            }
            else{
                temp=null;
                // your code here           
            }

      }
}