在Internet Explorer(任何版本)中,如果您快速单击两次复选框,它只会更改一次。另一个浏览器不这样做。
这是“按设计”还是一种非常奇怪的行为(错误)?
答案 0 :(得分:10)
当我在许多不同公司担任系统管理员时,我经常看到人们使用doubleclick作为默认操作来与任何UI元素进行交互。他们了解Windows的第一件事是双击启动图标(快捷方式)。他们将这些知识应用于其他所有元素,无论它实际是什么:链接,按钮,图标或复选框 =) 因此,我认为它是故意制作的,IE计算双击作为单击。
答案 1 :(得分: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中的复选框
答案 2 :(得分:2)
这似乎是IE中的常见错误,它不仅适用于复选框,而且适用于一般的点击处理。看起来它将在IE9平台预览版4中修复:
http://webbugtrack.blogspot.com/2008/01/bug-263-beware-of-doubleclick-in-ie.html
答案 3 :(得分:2)
以下代码适用于我:
<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
}
}
}