.prop(“checked”,false)使复选框为true

时间:2017-02-03 23:05:31

标签: jquery checkbox checked prop

我有一些<input value=name type=checkbox>,其值必须是持久的。所以我在Cookies中存储了每个值的值,并且我写了一个函数,它必须在页面准备好后恢复值。

保存cookie的功能是:

function setAllCookies() {
    var checkboxs = $("#divwheretheinputsare input");
    for (i in checkboxs)
        Cookies.set(checkboxs[i].value,checkboxs[i].checked);
}

恢复它们的功能是:

function readAllCookies() {
    var checkboxs = $("#divwheretheinputsare input");
    for (i in checkboxs) {
        var nom = checkboxs[i].value;
        var value = Cookies.get(nom);
        $("##divwheretheinputsare input[value='" + nom + "']").prop("checked", value);
    //Also tried $("##divwheretheinputsare input[value='" + nom + "']")[0].checked = value;
    }
}

我可以确认Cookies以正确的名称存储,并且两个函数完全执行。通过调试,我检测到这一点:当行$(“## divwheretheinputsare input [value ='”+ nom +“']”)。prop(“checked”,value)被执行时,复选框总是被检查,无论是如果值为false。如果我在控制台中执行该确切的行,则复选框会正确更改...

此外,备用代码行在控制台中正确执行,但在它删除的函数中:“TypeError:$(...)[0]未定义”。

1 个答案:

答案 0 :(得分:0)

正如charlieftl提到的那样,你的值是作为字符串(“true”或“false”)而不是(true或false),并且prop(“checked”,value)字段中的任何值都将被取消是的。

尝试:

var value = (Cookies.get(nom) == 'true');

这会将您的值设置为布尔值而不是字符串。