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

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

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

Ответы [ 4 ]

11 голосов
/ 20 марта 2013

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

3 голосов
/ 07 июня 2013

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

Используя 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 события запускаются так:

  1. Нажмите
  2. Нажмите
  3. Двойной щелчок

При двойном щелчке желаемое действие в моем событии щелчка происходило дважды (как и должно быть), но флажок не менял состояния дважды. Так что я просто переключал проверенное / непроверенное состояние снова, когда срабатывает двойной щелчок. Поскольку это нарушило бы функциональность Firefox / Chrome / etc, я использовал его только в пользовательских агентах MSIE (Internet Explorer).

С кодом выше события и состояния флажков запускаются / изменяются следующим образом:

Двойной клик во всех браузерах, кроме IE:

  1. Нажмите (изменить состояние, событие щелчка огня)
  2. Нажмите (изменить состояние, событие щелчка огня)

Двойной щелчок на флажке в Internet Explorer

  1. Нажмите (изменить состояние, событие щелчка огня)
  2. Click (событие пожара)
  3. Двойной щелчок (изменение состояния (с помощью события двойного щелчка))
2 голосов
/ 15 июня 2016

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

<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           
            }

      }
}
2 голосов
/ 16 марта 2013

Кажется, это общая ошибка в IE, которая применяется не только к флажкам, но и к обработке кликов в целом.Похоже, это будет исправлено в IE9 Platform Preview 4:

http://webbugtrack.blogspot.com/2008/01/bug-263-beware-of-doubleclick-in-ie.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...