JQuery UI datepicker奇怪的问题(发生在Firefox中)

时间:2011-02-14 11:53:05

标签: jquery jquery-ui jquery-ui-datepicker

我使用以下功能禁用日期选择器日历中2011-02-13至2011-02-18的日期:

function no_disabled_days(date){
               dateStr1 = '2011-02-13';                   
               dateStr2= '2011-02-18';

               disabled_start_day = new Date(dateStr1);
               disabled_end_day = new Date(dateStr2);

               if(date >= disabled_start_day && date <= disabled_end_day){
                   return [false];
               }


             return [true];

  }

$("#reserve_date").datepicker({
            beforeShowDay: no_disabled_Days
});

例如,如果 dateStr1 ='2011-02-13' dateStr2 ='2011-02-18',则 2011-02的日期-13 2011-02-18 已停用

因为我使用

if(date >= disabled_start_day && date <= disabled_end_day)(请注意' = '符号)

所以,“ 2011-02-13 ”和“ 2011-02-18 ”已停用。

Chrome 浏览器中工作正常,但是,当我在 Firefox 中进行测试时,确切的disable_start_date未被禁用,那就是' 2011 -02-13 '未停用,其他日期工作正常。为什么?

为什么已停用的开始日期 2011-02-13 )在Firefox中未处于禁用状态?

1 个答案:

答案 0 :(得分:1)

您遇到了时区问题。创建日期对象时,本地时区会影响Date对象的时间组件,进而影响比较。解决方案是明确设置创建Date对象的时间。

此外,在函数中使用变量的方式是创建额外的全局变量。您应该使用var关键字使它们成为函数的本地。

以下是更正后的代码:

function no_disabled_days(date){
    var dateStr1 = '2011-02-13T00:00:00';                   
 var dateStr2= '2011-02-19T00:00:00';

 var disabled_start_day = new Date(dateStr1);
 var disabled_end_day = new Date(dateStr2);

  if(date >= disabled_start_day
     && date <= disabled_end_day){
    return [false];
  }
  return [true];
}

$("#reserve_date").datepicker({
  beforeShowDay: no_disabled_days
});

一个工作示例(在Firefox和Chrome中测试):

http://jsfiddle.net/ChrisMH/5jX6B/1/