Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 确保至少选中一个复选框的代码:在Chrome或Firefox中不起作用_Jquery - Fatal编程技术网

Jquery 确保至少选中一个复选框的代码:在Chrome或Firefox中不起作用

Jquery 确保至少选中一个复选框的代码:在Chrome或Firefox中不起作用,jquery,Jquery,我有一个工作日的复选框列表,我想确保在任何时候都至少选择一天。我已经创建了以下代码,但它似乎无法正常工作。在IE8中,它可以工作,但会间歇性地工作;在chrome和firefox中,它根本不工作。有人能解释我做错了什么吗 干杯 皮特 我认为更改事件是在状态更改后调用的,因此在此阶段阻止默认操作并不阻止取消选择它 但是,您可以通过编程再次选中该复选框 if (count < 1) { this.checked = true; } 请注意,平日已经是jQuery对象,因此再次将其传递

我有一个工作日的复选框列表,我想确保在任何时候都至少选择一天。我已经创建了以下代码,但它似乎无法正常工作。在IE8中,它可以工作,但会间歇性地工作;在chrome和firefox中,它根本不工作。有人能解释我做错了什么吗

干杯

皮特

我认为更改事件是在状态更改后调用的,因此在此阶段阻止默认操作并不阻止取消选择它

但是,您可以通过编程再次选中该复选框

if (count < 1) {
    this.checked = true;
}

请注意,平日已经是jQuery对象,因此再次将其传递给jQuery毫无意义。

据我回忆,IE在值更改时触发更改事件,而Firefox和Chrome在复选框失去焦点且值更改时触发更改事件。使用点击事件通常是最好的解决方案,但也有潜在的缺点。@Anthony:不,Firefox和Chrome也会直接触发更改事件。只有文本框在失去焦点且值更改时才会触发更改事件。您可以在演示中尝试。收听点击事件的最大缺点是无法识别通过键盘或其他输入设备所做的更改。有趣的是,我可以让我的原始版本在IE8中保持一致,因为我在调用preventDefault后在复选框中调用blur。这表明IE和其他浏览器处理状态变化的方式有所不同。
if (count < 1) {
    this.checked = true;
}