如何在Jquery datepicker中禁用日期范围

时间:2012-04-19 12:46:38

标签: jquery-ui-datepicker

我想禁用使用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,''];
      }

这可行,但不是第一次。当我第一次打开日期选择器时,日期范围仍然可以选择。但是,在我关闭并重新打开它之后,日期范围被禁用。此外,如果我更改月份并返回当前月份,那么它也可以。如何在第一次打开日期选择器时禁用日期范围?此外,对于每个月,我想获取日期范围并禁用它们。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

花了很多时间检查可能性后,我在加载页面时只获取了一次所有日期范围并将所有日期范围分配给一个隐藏字段。我删除了Ajax调用并直接在函数 disableRangeOfDays(d)中使用了隐藏字段的值,并且它按预期工作。