2017-02-03 42 views
1

我有一些<input value=name type=checkbox>的值必須是持久的。所以我在Cookies中存儲了它們中的每一個的值,並且我編寫了一個函數,該函數在頁面準備就緒時必須恢復這些值。.prop(「checked」,false)使複選框爲真

其保存的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存儲使用正確的名稱和兩個功能完成執行。通過調試,我檢測到:當行$(「## div wheretheputsare input [value ='」+ nom +「']」)。prop(「checked」,value)被執行時,複選框總是被檢查,無論如果價值是假的。如果我在控制檯中執行該確切的行,該複選框會正確更改...

此外,備用代碼行在控制檯中正確執行,但在其中刪除的函數中:「TypeError:$(...)[0 ]未定義「。

+0

Cookie存儲字符串,但您需要'prop('checked',boolean)的布爾值' – charlietfl

回答

0

由於charlieftl提到您的值以字符串形式(「true」或「false」)而不是(true或false)並且prop(「checked」,value)字段中的任何值都將視爲true。

嘗試:

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

這將您的值設置爲一個布爾值,而不是字符串。

相關問題