记录更改时的复选框值

时间:2013-06-10 19:49:59

标签: jquery checkbox

我有一个函数,只要复选框被更改,我就需要将复选框的值记录为关联数组的键。这部分并不难。我还有一个“全部检查”按钮。这是问题所在。我不确定如何让check all按钮执行与单个单元相同的操作。

var allchecked = false;
var checkstatus = [];

$(".check-all-button").click(function(e) {
    e.preventDefault();
    if (allchecked == false) {
        $("input:checkbox").attr("checked", "checked");
        $(".check-all-button").html("Uncheck All");
        allchecked = true;
        // Update checkstatus array here to [val] = true for all checkboxes
    } else {
        $("input:checkbox").removeAttr("checked");
        $(".check-all-button").html("Check All");
        allchecked = false;
        // Update checkstatus array here to [val] = false for all checkboxes
    }
});

$("input:checkbox").change(function(e) {
    if ($(this).is(":checked")) {
        checkstatus[this.value] = true;
    } else {
        checkstatus[this.value] = false;
    }
});

还有可能存在其他“隐藏的复选框”(或隐藏的输入持有值),它们将成为数组的一部分,所以我不能简单地将每个值更改为true或false,只是将那些值更改为{{{ 1}}

1 个答案:

答案 0 :(得分:3)

您将不得不迭代并设置值:

//checking ALL the boxes
$("input:checkbox").each(function(e) {
    checkstatus[this.value] = true;
});

//unchecking
$("input:checkbox").each(function(e) {
    checkstatus[this.value] = false;
});