.prop("проверил", ложь) делает флажок истинным

У меня есть немного <input value=name type=checkbox> чьи ценности должны быть постоянными. Поэтому я сохранил в 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", значение), флажок всегда проверяется, независимо от того, если значение ложно. Если я выполню эту точную строку в консоли, флажок поменяется правильно...

Кроме того, альтернативная кодовая строка правильно выполняется в консоли, но в функции она сбрасывается: "TypeError: $(...)[0] не определено".

1 ответ

Решение

Как упоминалось в charlietfl, ваше значение charlietfl в виде строки ("истина" или "ложь"), а не (истина или ложь), и любое значение в поле проп ("проверено", значение) будет приниматься за истину.

Пытаться:

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

Это установит ваше значение в логическое значение, а не в строку.

Другие вопросы по тегам