2012-04-19 16 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)で直接隠しフィールドの値を使用し、期待通りに機能しました。

関連する問題