在jQuery中找到所有未选中的复选框


197

我有一个复选框列表:

<input type="checkbox" name="answer" id="id_1' value="1" />
<input type="checkbox" name="answer" id="id_2' value="2" />
...
<input type="checkbox" name="answer" id="id_n' value="n" />

我可以收集所有已选中复选框的值;我的问题是如何获取所有未选中复选框的值?我试过了:

$("input:unchecked").val();

获取未选中的复选框的值,但是我得到了:

语法错误,无法识别的表达式:未选中。

有人可以阐明这个问题吗?谢谢!



Answers:


434

如错误消息所述,jQuery不包含:unchecked选择器。
相反,您需要反转:checked选择器:

$("input:checkbox:not(:checked)")

4
并且使用input [type = checkbox]是最快的。
jClark

29

$("input:checkbox:not(:checked)") 将使您处于未选中状态。


10

您可以通过扩展jQuerys功能来实现。这将缩短您必须为选择器编写的文本量。

$.extend($.expr[':'], {
        unchecked: function (obj) {
            return ((obj.type == 'checkbox' || obj.type == 'radio') && !$(obj).is(':checked'));
        }
    }
);

然后,您可以$("input:unchecked")用来获取所有选中的复选框和单选按钮。



3
$("input[type='checkbox']:not(:checked):not('\#chkAll\')").map(function () { 
   var a = ""; 
   if (this.name != "chkAll") { 
      a = this.name + "|off"; 
   } 
   return a; 
}).get().join();

这将检索所有未选中的复选框,并排除用于检查|取消选中所有复选框的“ chkAll”复选框。由于我想知道要传递给数据库的值,因此将其设置为off,因为复选框将值设为on。

//looking for unchecked checkboxes, but don’t include the checkbox all that checks or unchecks all checkboxes
//.map - Pass each element in the current matched set through a function, producing a new jQuery object containing the return values.

//.get - Retrieve the DOM elements matched by the jQuery object.
//.join - (javascript) joins the elements of an array into a string, and returns the string.The elements will be separated by a specified separator. The default separator is comma (,).

2
您不应在答案中包含与OP完全无关的内容。他不使用chkAll盒子,所以提到它有什么意义。
MMM

3

您可以这样使用:

$(":checkbox:not(:checked)")

1

要选择class,您可以执行以下操作:

$("input.className:checkbox:not(:checked)")

0
$(".clscss-row").each(function () {
if ($(this).find(".po-checkbox").not(":checked")) {
               // enter your code here
            } });

1
欢迎来到StackOverflow!请在您的代码中添加解释,以便其他用户(可能正是他们正在寻找的用户)知道您的代码做什么。
Nander Speerstra
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.