2013-05-05 3 views
0

많은 감사를드립니다.
여러 페이지에 걸쳐있는 페이징 된 데이터 집합 (SPRY XML 데이터 집합에서 생성)이 있습니다.
jquery 쿠키 https://github.com/carhartl/jquery-cookie을 사용하여 체크 된 체크 박스가 페이지간에 손실 되었기 때문에 체크 된 체크 박스를 저장합니다. 내가 사용한 다음 코드의 (a 유래 포스트에서) 쿠키 테이블이 동적으로 생성되기 때문에동적으로 생성 된 체크 박스 배열 (jquery)의 쿠키에서 체크 박스 체크

$(document).ready(function(){ 
    // find the div named books containg rows and a checkbox in the end 
    $("#books").on("click",function(){ 



    $(":checkbox:checked.chkbCsm").each(function() {//alert("test"); 
    var mycookie = $.cookie($(this).attr('value')); 
    if (mycookie && mycookie == "true") { 
     $(this).prop('checked', mycookie); 
    } 
}); 

$(":checkbox:checked.chkbCsm").change(function() { 


    $.cookie($(this).attr("value"), $(this).prop('checked'), { 
     path: '/', 
     expires: 365 
    }) 
}); 


}); 

는 CSTE 연구진은 내 wraped을 설정할 수 있습니다. 쿠키가 올바르게 설정되었습니다.

나는 쿠키 배열 에서 값을 읽음으로써 체크 박스를 복원하기 위해 다음 스 니펫을 만들었습니다.

$(document).ready(function() { 


var cookies = get_cookies_array(); 
var temp = []; 

// keep only cookies relevant in temp 
for(var name in cookies) { 

    if (!isNaN(name) && cookies[name]=="true") { 

    temp.push(name); 

} 

} 

//restore all cookies from temp array 
    for(i=0 ; i<temp.length ; i++) { 


var text=temp[i]; 
$('input[value='+text+']').prop('checked', true); 
} 


});//document ready 

코드는 일반적으로 작동하지만 문제가 있습니다.
쿠키가 설정되어 있는지 확인한 다음 다음 페이지로 이동 한 다음 으로 다시 이동한다고 가정합니다.
쿠키가 확인란을 올바르게 복원합니다. 그러나 체크 박스를 선택 취소하면 클릭이 무시되고 쿠키는 계속 체크 된 체크 박스를 포함하는 것으로 간주됩니다. 확인란을 다시 선택 해제하면 쿠키가 올바르게 false로 설정됩니다 (선택 취소).
즉, 처음에는 .change() 함수가 트리거되지 않으므로 원치 않는 것일 수 있습니다.
또한, 체크 박스가 변경되면 프로그램 적으로 .change()가 트리거되지 않는다는 것을 이해합니다.
나는 여러 경로 (.triggerHandler ("change")를 .prop() 옆에 넣었다. )을 공부하고 Need checkbox change event to respond to change of checked state done programmaticallyWhy isn't my checkbox change event triggered?을 공부했지만 문제가 해결되지 않았다.

어떤 문제라도 해결 방법을 환영합니다. 많은 감사합니다

답변

0

관심있는 사용자를 돕기 위해 데이터 세트 페이지 영역을 업데이트 한 후 .trigger ("클릭")를 추가하여 문제가 해결 될 것으로 보입니다 (적어도 Firefox ...). Spry Observer 자세한 내용은)는 어떤 이유로 이미 확인 체크 박스에서 데이터 세트 페이지 사이의 탐색 후 첫 번째 클릭은 누락 된 것으로 보인다

myObserver = new Object; 
myObserver.onPostUpdate = function(notifier, data) 
{  
    $(document).ready(function() { 

var cookies = get_cookies_array(); 
var temp = []; 

for(var name in cookies) { 

    if (!isNaN(name) && cookies[name]=="true") { 

    temp.push(name); 
} 

} 
    for(i=0 ; i<temp.length ; i++) { 
var text=temp[i]; 
$('input[value='+text+']').prop('checked', true).triggerHandler("change"); 
} 

});//document ready 

$(document).ready(function() { 
**$("#books").trigger("click");** 
}); 
}; 



Spry.Data.Region.addObserver("bibliapv", myObserver); 

즉. 독서에 대한 많은 감사드립니다.