2017-02-03 19 views
1

값이 지속적이어야하는 <input value=name type=checkbox>이 있습니다. 그래서 쿠키의 모든 값을 쿠키에 저장했습니다. 그리고 페이지 준비가 완료되면 값을 복원해야하는 함수를 작성했습니다..prop ("checked", false) 체크 박스를 true로 만듭니다.

쿠키를 저장 기능은 다음과 같습니다

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

내가 쿠키 올바른 이름과 함께 저장됩니다 확인할 수 있으며,이 개 기능은 다음과 같습니다

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

및 복원 할 수있는 기능입니다 completly 실행. 디버깅을하면 다음과 같은 결과가 나옵니다. $ ("## divwheretheinputsare input [value = '"+ nom + "']"). prop ("checked", value) 행이 실행되면 체크 박스는 항상 아무렇게나 선택됩니다. 값이 false의 경우 콘솔에서 해당 줄을 올바르게 실행하면 확인란이 올바르게 변경됩니다 ...

대체 코드 라인은 콘솔에서 제대로 실행되지만 함수에서 제대로 실행됩니다. "TypeError : $ (...) [0 ]이 (가) 정의되지 않았습니다. "

+0

쿠키는 문자열을 저장하지만'prop ('checked', boolean)에 대해서는 boolean이 필요합니다. – charlietfl

답변

0

charlieftl에 언급 된 값은 문자열 ("true"또는 "false")이 아닌 true 또는 false이며 prop ("checked", value) 필드의 값은 true로 간주됩니다.

시도 :

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

문자열이 아닌 부울에 값을 설정합니다.