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-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中没有处于禁用状态?
您正遇到时区问题。 创建日期对象时,本地时区会影响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中测试):