2017-02-03 5 views
1

Ich habe einige <input value=name type=checkbox> deren Werte persistent sein müssen. Also habe ich in Cookies den Wert von jedem von ihnen gespeichert, und ich habe eine Funktion geschrieben, die die Werte wiederherstellen muss, wenn die Seite fertig ist..prop ("checked", false) macht das Kontrollkästchen true

Die Funktion, die die Cookies speichern ist:

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

Und die Funktion, um sie wiederherzustellen ist:

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

ich die Plätzchen mit dem richtigen Namen und die beiden Funktionen gespeichert sind, bestätigen können, sind vollständig ausgeführt. Beim Debuggen erkenne ich folgendes: Wenn die Zeile $ ("## divwhethereinputs wird eingegeben [value = '" + nom +' '] "). Prop (" checked ", value) ausgeführt wird, wird das checkbox immer angekreuzt, egal Wenn der Wert falsch ist. Wenn ich diese genaue Zeile in der Konsole ausführe, ändert sich das Kontrollkästchen korrekt ...

Auch die alternative Codelinie wird in der Konsole korrekt ausgeführt, aber in der Funktion fällt sie: "TypeError: $ (...) [0 ] ist nicht definiert".

+0

Cookies speichern Zeichenfolgen, aber Sie benötigen einen booleschen Wert für 'prop ('checked', boolean)' – charlietfl

Antwort

0

Als charlieftl erwähnt Ihr Wert kommt als String ("true" oder "false") nicht (true oder false) und jeder Wert im Prop ("checked", value) Feld wird als wahr angenommen.

Versuchen:

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

Das Ihren Wert auf eine boolean anstatt eine Zeichenfolge festgelegt wird.

Verwandte Themen