2017-02-03 3 views
1

У меня есть <input value=name type=checkbox>, значения которого должны быть постоянными. Поэтому я сохранил в Cookies значение каждого из них, и я написал функцию, которая должна восстановить значения, когда страница будет готова..prop («checked», false) делает флажок true

Функция, сохранить куки является:

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

Я могу подтвердить, что Куки хранятся с правильным именем и эти две функции полностью выполнен. С отладкой я обнаруживаю это: когда строка $ ("## divwheretheinputsare вводится [значение = '" + nom + "']"). Prop ("checked", value) выполняется, флажок всегда проверяется, независимо от того, если значение ложно. Если я выполняю эту точную строку в консоли, флажок правильно изменяется ...

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

+0

cookie хранит строки, но вам нужно логическое значение для 'prop ('checked', boolean)' – charlietfl

ответ

0

В качестве charlieftl указано, что ваше значение входит в строку («true» или «false») not (true или false), и любое значение в поле prop («checked», value) будет считаться истинным.

Try:

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

Это будет установить значение булево, а не строки.

Смежные вопросы