В Internet Explorer (любая версия), если вы нажмете дважды быстро, установите флажок, который изменяется только один раз. Другие браузеры этого не делают.
Это "по дизайну" или очень странное поведение (ошибка)?
В Internet Explorer (любая версия), если вы нажмете дважды быстро, установите флажок, который изменяется только один раз. Другие браузеры этого не делают.
Это "по дизайну" или очень странное поведение (ошибка)?
В то время как я работал системным администратором во многих разных компаниях, я часто видел, что люди используют doubleclick как действие по умолчанию для взаимодействия с любым элементом пользовательского интерфейса. Первое, что они узнали о Windows, - это то, что doubleclick запускает значок (ярлык). И они применяют это знание ко всем другим элементам, независимо от того, что это на самом деле: ссылка, кнопка, значок или флажок =) Итак, я предполагаю, что он сделал преднамеренно, что IE считает doubleclick как singleclick.
Это, по-видимому, общая ошибка в IE, которая применяется не только к флажкам, но и к обработке кликов в целом. Похоже, он будет исправлен в IE9 Platform Preview 4:
http://webbugtrack.blogspot.com/2008/01/bug-263-beware-of-doubleclick-in-ie.html
С помощью 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
Следующий код работает для меня:
<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
}
}
}