我有五个复选框。使用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[]">
答案 0 :(得分:17)
is()
可以做到这一点,可以说是is(":checked")
唯一可以接受的用途:
来自jQuery文档,http://api.jquery.com/is/:
根据选择器,元素或jQuery对象检查当前匹配的元素集,如果这些元素中至少有一个与给定的参数匹配,则返回true。
alert($("input[name='service[]']").is(":checked"));
示例:http://jsfiddle.net/AndyE/bytVX/1/ (基于Brandon Gano的小提琴)
或者,可能更快,您可以将函数传递给is()
:
$("input[name='service[]']").is(function () {
return this.checked;
});
答案 1 :(得分: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
});
在这个例子中使用.each()是多余的,因为.is()可以直接用在对象集上,而不是手动迭代每个对象。下面是一个更有效的解决方案:
$('button').click(function () {
var atLeastOneIsChecked = $('input:checkbox').is(':checked');
// Do something with atLeastOneIsChecked
});
请注意,其中一条评论表明对$(this).is(':checked')
非常不喜欢。为了澄清,在您测试一组对象的情况下,is(':checked')
没有任何问题。也就是说,在单个项目上调用is(':checked')
比在同一项目上调用.checked
效率低得多。它还涉及对$ function的不必要的调用。
答案 2 :(得分:11)
这应该可以解决问题:
function isOneChecked() {
return ($('[name="service[]"]:checked').length > 0);
}
答案 3 :(得分:2)
另一个答案:
!!$("[type=checkbox]:checked").length
或
!!$("[name=service[]]:checked").length
这取决于你想要什么。
答案 4 :(得分:1)
var checkboxes = document.getElementsByName("service[]");
if ([].some.call(checkboxes, function () { return this.checked; })) {
// code
}
你想要的是简单的,获取具有名称的所有元素,然后在检查其中一些元素时运行一些代码。
不需要jQuery。
虽然
可能需要旧版浏览器的ES5垫片答案 5 :(得分:1)
你应该尝试这样....
var checkboxes = $("input[type='checkbox']"),
submitButt = $("input[type='submit']");
checkboxes.click(function() {
submitButt.attr("disabled", !checkboxes.is(":checked"));
});
答案 6 :(得分:1)
您需要检查复选框是否已选中。
$("#select_all").click(function(){
var checkboxes = $("input[type='checkbox']");
if(checkboxes.is(":checked"))
alert("checked");
else
alert("select at least one;
});
答案 7 :(得分:0)
var atLeastOneIsChecked = $('input[name="service[]"]:checked').length > 0;
答案 8 :(得分:0)
您可以按照以下方式进行操作。最初设置一个变量,假设checked
为false
。如果满足以下条件,则将其设置为true
。使用if
语句检查变量。请注意:这里的submit
是按钮的id
,main
是表单的ID。
$("#submit").click(function() {
var checked = false;
if (jQuery('#main input[type=checkbox]:checked').length) {
checked = true;
}
if (!checked) {
//Do something
}
});
答案 9 :(得分:0)
方括号 []
不是必需的:
var atLeastOneIsChecked = $("input[name='service']:checked").length > 0;
同样适用于您的 HTML,但最好使用 id
来唯一标识每个复选框:
<input id="chk1" type="checkbox" name="service">
<br />
<input id="chk2" type="checkbox" name="service">
<br />
<input id="chk3" type="checkbox" name="service">
<br />
<input id="chk4" type="checkbox" name="service">
<br />
<input id="chk5" type="checkbox" name="service">