我使用以下功能禁用日期选择器日历中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中未处于禁用状态?
答案 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中测试):