2012-04-19 3 views
1

Ajax를 사용하여 가져온 날짜 범위를 비활성화하고 싶습니다. 나는 다음과 같이하고있다. -Jquery datepicker에서 날짜 범위를 비활성화하는 방법

$("#date_frm").datepicker({ 
dateFormat: 'yy-mm-dd', 
constrainInput: true, 
beforeShow:function(input, inst) { 
    $.ajax({ 
      type: "POST", 
      url: "/admin/get_time_span", 
      data: "", 
      success: function(data) { 
      disabled_day = data; 
      }, 
     }); 
}, 
beforeShowDay: disableRangeOfDays 
}); 

function disableRangeOfDays(d) 
{ 
    //var arr = "2012-04-19 to 2012-04-26,"; 
    var arr = disabled_day.split(","); 
    var arr = arr.split(","); 
    var cnt = arr.length-1; 
    for(i=0; i<cnt; i++) { 
     arr1 = arr[i].split(" to "); 
     //create date for from_date 
     frm_dt = arr1[0].split('-'); 
     //create date for to_date 
     to_dt = arr1[1].split('-'); 
     if(d >= new Date(frm_dt[0],(frm_dt[1]-1),frm_dt[2]) && 
d <= new Date(to_dt[0],(to_dt[1]-1),to_dt[2])) { 
       return [false]; 
      } 
     } 
     return [true,'']; 
     } 

이것은 처음에는 아니지만 작동한다. 처음으로 날짜 선택 도구를 열면 날짜 범위가 여전히 선택 가능합니다. 하지만 닫은 후 다시 열면 날짜 범위가 비활성화됩니다. 또한, 내가 달을 바꾸고 현재 달로 돌아 오면 그것은 또한 작동합니다. 날짜 선택기를 처음 열 때 날짜 범위를 비활성화하려면 어떻게합니까? 또한 매달마다 기간을 가져와 비활성화하려고합니다. 어떻게해야합니까?

답변

0

가능성을 확인하는 데 많은 시간을 보낸 후에 페이지를로드하는 동안 모든 날짜 범위를 한 번만 가져 왔으며 모두 숨겨진 필드에 할당했습니다. Ajax 호출을 제거하고 함수 의 disableRangeOfDays (d)에서 숨겨진 필드의 값을 직접 사용했으며 예상대로 작동했습니다.

관련 문제