Internet explorer 为什么Internet Explorer复选框接受双击但只更改一次状态?

Internet explorer 为什么Internet Explorer复选框接受双击但只更改一次状态?,internet-explorer,Internet Explorer,在Internet Explorer(任何版本)中,如果您单击两次快速复选框,它只会更改一次。其他浏览器不这样做 这是“按设计”还是一个非常奇怪的行为(bug)?这似乎是IE中的一个常见bug,它不仅适用于复选框,还适用于一般的点击处理。看起来它将在IE9平台预览4中修复: 当我在许多不同的公司担任系统管理员时,我经常看到人们使用双击作为默认操作来与任何UI元素交互。关于Windows,他们学到的第一件事是双击会启动一个图标(快捷方式)。他们将这些知识应用到其他所有元素中,不管它们实际上是什么:

在Internet Explorer(任何版本)中,如果您单击两次快速复选框,它只会更改一次。其他浏览器不这样做


这是“按设计”还是一个非常奇怪的行为(bug)?

这似乎是IE中的一个常见bug,它不仅适用于复选框,还适用于一般的点击处理。看起来它将在IE9平台预览4中修复:


当我在许多不同的公司担任系统管理员时,我经常看到人们使用双击作为默认操作来与任何UI元素交互。关于Windows,他们学到的第一件事是双击会启动一个图标(快捷方式)。他们将这些知识应用到其他所有元素中,不管它们实际上是什么:链接、按钮、图标或复选框 所以,我想这是故意的,IE将双击计算为单次点击。

解决方法/解决方案 使用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中双击时,将按如下方式触发事件:

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                                        
});
  • 点击
  • 点击
  • 双击
  • 双击时,my click事件中所需的操作发生了两次(就像它应该发生的那样),但复选框没有两次更改状态。因此,当双击触发时,我只需再次切换选中/未选中状态。因为这会破坏Firefox/Chrome/etc中的功能,所以我只在MSIE(InternetExplorer)用户代理中使用它

    使用上述代码,事件和复选框的状态如下所示:

    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                                        
    });
    
    在除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           
                }
    
          }
    }
    
    
    无功温度;
    功能切换GetSelected(e){
    如果(e){
    //下面是处理双击的if条件
    如果(e.checked==true&&temp==e.value){
    e、 选中=错误;
    }
    //结束双击控制柄
    如果(e.checked==true){
    温度=e值;
    //你的代码在这里
    }
    否则{
    温度=零;
    //你的代码在这里
    }
    }
    }
    
    以前,IE或explorer选项中都有一个“检测意外双击”选项,你知道这个选项是否已经存在吗?目前的答案看起来不错。。。如果你需要一个变通方法或解决方案,请发布一些代码或你的目标是什么。您使用JQuery吗?双击有什么问题吗?只是好奇而已。我真的期待一些关于这种行为的“官方”消息来源。我仍然希望它会出现,但我对科伦巴的回答有些满意。如果赏金期限到期,他将获胜。我想澄清一下,我从来没有提到这个问题是一个开发问题。这只是一个关于浏览器行为的问题实际上IE9已经发布了。我也是。但这篇文章似乎是在讨论错误触发的事件,而不是您不能快速选中和取消选中的事实。@VitorCanova:正确,但这些事件是复选框用来进行切换的。。。