1

Ajax を使用して取得した日付の範囲を無効にしたいと考えています。私は次のようにやっています -

$("#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,''];
      }

これは機能しますが、初めてではありません。日付ピッカーを初めて開いたとき、日付範囲はまだ選択可能です。しかし、閉じて再度開くと、日付範囲が無効になります。また、月を変更して現在の月に戻った場合も機能します。日付ピッカーを初めて開いたときに日付範囲を無効にするにはどうすればよいですか? また、毎月、日付範囲を取得して無効にしたいと考えています。これどうやってするの ?

4

1 に答える 1

0

可能性を確認するのに多くの時間を費やした後、ページの読み込み中にすべての日付範囲を一度だけ取得し、すべてを隠しフィールドに割り当てました。Ajax 呼び出しを削除し、隠しフィールドの値を関数disableRangeOfDays(d)で直接使用したところ、期待どおりに機能しました。

于 2012-04-25T06:25:14.237 に答える