0

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

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;
    }
});

还有可能还有其他“隐藏的复选框”(或隐藏的输入包含一个值)将成为数组的一部分,所以我不能简单地将每个值更改为真或假,只是那些与input[type=checkbox]

4

1 回答 1

3

您将不得不遍历并设置值:

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

//unchecking
$("input:checkbox").each(function(e) {
    checkstatus[this.value] = false;
});
于 2013-06-10T19:51:45.240 回答