【问题标题】:.prop("checked", false) makes checkbox true.prop("checked", false) 使复选框为真
【发布时间】:2017-02-03 23:05:30
【问题描述】:

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

保存cookies的函数是:

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

我可以确认 Cookie 以正确的名称存储,并且两个功能已完全执行。通过调试,我检测到:当执行 $("##divwheretheinputsare input[value='" + nom + "']").prop("checked", value) 行时,复选框总是被选中,不管如果值为假。如果我在控制台中执行该确切的行,复选框会正确更改...

另外,替代代码行在控制台中正确执行,但在函数中它丢弃:“TypeError: $(...)[0] is undefined”。

【问题讨论】:

  • cookies 存储字符串,但您需要一个布尔值来表示 prop('checked', boolean)

标签: jquery checkbox checked prop


【解决方案1】:

正如charlieftl 提到的,您的值是以字符串(“true”或“false”)而不是(true 或 false)的形式出现的,并且 prop("checked",value) 字段中的任何值都将被视为 true .

试试:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    相关资源
    最近更新 更多