循环选中复选框并计算每个选中或取消选中的复选框

Ric*_*d M 75 checkbox jquery

我遇到了一个问题.这是一个简短的解释.

我在标准表格上有12个复选框.我需要做的是遍历每一个并了解哪些被检查以及哪些未被检查.

使用它,然后我可以构建一个字符串,然后我将其输入数据库字段.这是一个例子.

(Check1 - 选中)
(Check2 - 未选中)
(Check3 - 选中)

1,0,1

到目前为止,我已经有了这段代码.

$('input[type=checkbox]').each(function () {
           if (this.checked) {
               console.log($(this).val()); 
           }
});
Run Code Online (Sandbox Code Playgroud)

它完美地工作,除了它只带回已检查的,而不是全部.

对不起,对于新问题.我对jquery有点新意.

Ed *_*bor 117

要以您显示的格式完全构建结果字符串,您可以使用:

var sList = "";
$('input[type=checkbox]').each(function () {
    sList += "(" + $(this).val() + "-" + (this.checked ? "checked" : "not checked") + ")";
});
console.log (sList);
Run Code Online (Sandbox Code Playgroud)

但是,我同意@SLaks,我认为您应该重新考虑将其存储在数据库中的结构.

编辑:对不起,我误读了你要找的输出格式.这是一个更新:

var sList = "";
$('input[type=checkbox]').each(function () {
    var sThisVal = (this.checked ? "1" : "0");
    sList += (sList=="" ? sThisVal : "," + sThisVal);
});
console.log (sList);
Run Code Online (Sandbox Code Playgroud)


Sam*_*son 59

使用选择器

你可以得到所有选中的复选框,如下所示:

var boxes = $(":checkbox:checked");
Run Code Online (Sandbox Code Playgroud)

并且所有非检查都是这样的:

var nboxes = $(":checkbox:not(:checked)");
Run Code Online (Sandbox Code Playgroud)

您只能循环浏览其中一个集合,并存储这些名称.如果没有任何东西,你知道它是否被检查过.在PHP中,如果您有一个已检查的名称数组,您可以简单地做一个in_array()请求,以了解是否应该在以后检查任何特定的框.

连载

jQuery还有一个序列化方法,可以维护表单控件的状态.例如,jQuery网站上提供的示例如下:

single=Single2&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio2
Run Code Online (Sandbox Code Playgroud)

这将使您能够保留检查哪些元素的信息.


SLa*_*aks 16

您可以通过编写循环遍历所有复选框$(':checkbox').each(...).

如果我正确理解您的问题,您正在寻找以下代码:

var str = "";

$(':checkbox').each(function() {
    str += this.checked ? "1," : "0,";
});

str = str.substr(0, str.length - 1);    //Remove the trailing comma
Run Code Online (Sandbox Code Playgroud)

此代码将循环遍历所有复选框,并将1,或添加0,到字符串中.