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

我使用以下函数禁用日期选择器日历中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-132011-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中没有处于禁用状态?

您正遇到时区问题。 创建日期对象时,本地时区会影响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/