Javascript IE 11中双击时的复选框状态

Javascript IE 11中双击时的复选框状态,javascript,internet-explorer,checkbox,internet-explorer-11,Javascript,Internet Explorer,Checkbox,Internet Explorer 11,我的目标是限制页面上选中复选框的数量 <html> <head> <script> var globalCounter = 0; var maxCount = 2; function updateCounter(obj) { globalCounter += (obj.checked ? 1 : -1); console.log(globalCounter); if (globalCounter > maxCount &&

我的目标是限制页面上选中复选框的数量

<html>
<head>
<script>
var globalCounter = 0;
var maxCount = 2;
function updateCounter(obj) {
    globalCounter += (obj.checked ? 1 : -1);
    console.log(globalCounter);
    if (globalCounter > maxCount && obj.checked) {
        obj.checked = false;
        globalCounter = maxCount;
        return false;
    }
    return true;
}
</script>
</head>
<body>
<input type=checkbox onclick="updateCounter(this);">
<input type=checkbox onclick="updateCounter(this);">
<input type=checkbox onclick="updateCounter(this);">
<input type=checkbox onclick="updateCounter(this);">
</body>
</html>

var globalCounter=0;
var-maxCount=2;
函数更新计数器(obj){
全局计数器+=(对象检查?1:-1);
控制台日志(globalCounter);
如果(全局计数器>最大计数和对象检查){
obj.checked=false;
全局计数器=最大计数;
返回false;
}
返回true;
}
在我尝试双击IE 11中的复选框之前,一切似乎都很好。2
onclick
触发事件,在第二个事件中,我选中了不正确的
对象

有解决办法吗

一些注意事项:

  • 不要使用内联事件处理程序
  • 不要收听
    单击
    事件。复选框可以以其他方式更改,例如键盘。IE有时在双击时不会触发
    单击事件
  • 没有必要返回布尔值
假设您不会动态创建其他复选框

var globalCounter=0,
maxCount=2,
els=document.querySelectorAll('input[type=“checkbox”]”);
对于(变量i=0;i最大计数){
此项检查=错误;
全局计数器=最大计数;
}
}

如果我可以推荐一种更好的方法

函数更新计数器(obj){
var checkbox=document.getElementsByName('check1');
检查的var=[];
对于(i=0;i2){
obj.checked=false;
}
}


可以尝试为双击添加一个侦听器并防止默认,否则请尝试
。。。onclick=“return updateCounter(this);”
@chrlietfl我试图为每个复选框添加ondblclick=“return event.preventDefault();”,但没有帮助。添加
return
也没有帮助。谢谢!但是为什么不使用just counter而不是
checked
array?@red1ynx,您的计数器不工作的原因是因为您有一个全局计数器。这就给很多错误留下了空间(比如双击)。此数组填充了每次单击复选框时选中的复选框数。