【发布时间】:2011-05-04 11:18:09
【问题描述】:
我知道如何查看单个复选框是否被选中。
但我遇到以下问题 - 给定一个表单 ID,我需要查看是否选中了 任何 个复选框(即 1 个或多个),并且我需要查看是否 none 被选中。基本上我需要两个单独的函数来回答这两个问题。帮助将不胜感激。谢谢!
实际上,我只需要一个函数来告诉我是否选择了 none。知道这一点将回答另一个问题。
【问题讨论】:
标签: javascript jquery forms
我知道如何查看单个复选框是否被选中。
但我遇到以下问题 - 给定一个表单 ID,我需要查看是否选中了 任何 个复选框(即 1 个或多个),并且我需要查看是否 none 被选中。基本上我需要两个单独的函数来回答这两个问题。帮助将不胜感激。谢谢!
实际上,我只需要一个函数来告诉我是否选择了 none。知道这一点将回答另一个问题。
【问题讨论】:
标签: javascript jquery forms
你可以使用这样的东西
if ($("#formID input:checkbox:checked").length > 0)
{
// any one is checked
}
else
{
// none is checked
}
【讨论】:
$("#formID input:checkbox:checked").length 在这里也足够了
if ($("#formID input:checkbox:checked").length){}(没有>0)就足够了,因为0是一个错误的值,请参阅james.padolsey.com/javascript/truthy-falsey
:checkbox 选择器:For better performance in modern browsers, use [type="checkbox"],见api.jquery.com/checkbox-selector - 顺便说一句,单选按钮也一样,use [type="radio"] rather than :radio api.jquery.com/radio-selector
JQuery .is 将测试所有指定的元素,如果其中至少一个匹配选择器,则返回 true:
if ($(":checkbox[name='choices']", form).is(":checked"))
{
// one or more checked
}
else
{
// nothing checked
}
【讨论】:
is() 似乎可行,但@rahul 的答案中直接在选择器中使用:checked 似乎更合适。 is() 在“内部回调”时似乎更有用,请参阅api.jquery.com/is。还是我错过了什么?
.is(":checked") 更具表现力,但不确定其余部分。
$("form input[type=checkbox]").is(":checked") 可能是一种更简单、更通用的方法。
is 可能性能更好,因为它一找到就停止。
【讨论】:
:checkbox 选择器:For better performance in modern browsers, use [type="checkbox"],见api.jquery.com/checkbox-selector
不使用“长度”,您可以这样做:
if ($('input[type=checkbox]').is(":checked")) {
//any one is checked
}
else {
//none is checked
}
【讨论】:
这是我用来检查复选框列表中的任何复选框是否已更改的内容:
$('input[type="checkbox"]').change(function(){
var itemName = $('select option:selected').text();
//Do something.
});
【讨论】:
Rahul 的回答最适合您的问题。无论如何,如果您要检查一组复选框,而不是表单中的所有复选框,您可以选择它。
为您要检查的所有复选框设置一个类名,例如,一个类名test_check,现在您可以通过以下方式检查是否选中了属于该组的任何复选框:
$("#formID .test_check:checked").length > 0
如果它返回true,假设选中了一个或多个类名为test_check 的复选框,如果返回false,则没有选中。
希望它可以帮助某人。谢谢:)-
【讨论】:
【讨论】:
这是解决这个问题的最好方法。
if($("#checkbox").is(":checked")){
// Do something here /////
};
【讨论】: