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

Gar*_*ary 185 html checkbox jquery input

我有一个复选框列表:

<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" />
Run Code Online (Sandbox Code Playgroud)

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

$("input:unchecked").val();
Run Code Online (Sandbox Code Playgroud)

得到一个未经检查的复选框的值,但我得到了:

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

任何人都可以解释这个问题吗?谢谢!

SLa*_*aks 408

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

$("input:checkbox:not(:checked)")
Run Code Online (Sandbox Code Playgroud)

  • @bazmegakapa:不,但速度更快.http://api.jquery.com/checkbox-selector/ (20认同)
  • 使用输入[type = checkbox]是最快的. (4认同)

dav*_*ave 26

$("input:checkbox:not(:checked)") 会得到你未经检查的盒子.

  • 这包括所有文本框. (3认同)

Thu*_*ram 10

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


$("input:unchecked")
Run Code Online (Sandbox Code Playgroud)


Pav*_*iza 5

也可以通过纯js​​通过以下方式实现:

var matches = document.querySelectorAll('input[type="checkbox"]:not(:checked)');
Run Code Online (Sandbox Code Playgroud)