Kat*_*ntz 11 javascript jquery
我有五个复选框.使用jQuery,如何检查是否至少检查了其中一个?
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
<br />
<input type="checkbox" name="service[]">
Run Code Online (Sandbox Code Playgroud)
And*_*y E 17
is()可以做到这一点,可以说是唯一可以接受的用途is(":checked"):
来自jQuery文档,http://api.jquery.com/is/:
根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true.
Run Code Online (Sandbox Code Playgroud)alert($("input[name='service[]']").is(":checked"));示例:http://jsfiddle.net/AndyE/bytVX/1/(基于布兰登加诺的小提琴)
或者,可能更快,您可以将函数传递给is():
$("input[name='service[]']").is(function () {
return this.checked;
});
Run Code Online (Sandbox Code Playgroud)
Bra*_*ano 15
编辑:此答案中的原始解决方案效率低下,不应使用.请根据此问题的其他答案中的注释和示例查看修订后的解决方案.
原始(坏)解决方案如下:
// DO NOT USE; SEE BELOW
$('button').click(function () {
var atLeastOneIsChecked = false;
$('input:checkbox').each(function () {
if ($(this).is(':checked')) {
atLeastOneIsChecked = true;
// Stop .each from processing any more items
return false;
}
});
// Do something with atLeastOneIsChecked
});
Run Code Online (Sandbox Code Playgroud)
在这个例子中使用.each()是多余的,因为.is()可以直接在对象集上使用,而不是手动迭代每个对象.更有效的解决方案如下:
$('button').click(function () {
var atLeastOneIsChecked = $('input:checkbox').is(':checked');
// Do something with atLeastOneIsChecked
});
Run Code Online (Sandbox Code Playgroud)
请注意,其中一条评论表明非常不喜欢$(this).is(':checked').为了澄清,is(':checked')在测试一组对象的情况下没有任何问题.也就是说,调用is(':checked')单个项目比调用.checked同一个项目效率低得多.它还涉及对$函数的不必要调用.
jab*_*lab 12
这应该做的伎俩:
function isOneChecked() {
return ($('[name="service[]"]:checked').length > 0);
}
Run Code Online (Sandbox Code Playgroud)