嘿伙计,
我的jQuery Datepicker脚本存在很大问题。 我使用jQuery 1.4.2和jQuery Ui 1.8。
背景: 我有一个带有fromDate和toDate的预约日历,所有已保留的日期都被禁用。日期来自AJAX Call的数据库。
问题: 在Firefox中一切正常 - 但IE 7/8不会禁用实际月份的日期。我在IE 7/8中没有收到任何错误消息!
这是我的代码:
首先通过AJAX调用来获取日期:
var navDays = (function () {
var val = null;
$.ajax({
'async': false,
'global': false,
'url': WEG_URL+'rsv_avdates.php',
'success': function (data) {
val = data;
}
});
return val;
})();
var disDays = navDays.split('|');
在disDays中,我现在的日期类似'2010-01-01','2010-01-02',.....
这是我的disableDates函数:
function disabledDays(date) {
var m = date.getMonth();
var d = date.getDate();
var y = date.getFullYear();
for (var i = 0; i <= disDays.length-1; i++) {
var myDate = new Date(disDays[i]);
if ((m == (myDate.getMonth())) && (d == (myDate.getDate())) && (y == (myDate.getFullYear())))
{
return [false];
}
}
return [true];
}
最后是我的datepicker电话:
$('#fromdate, #todate').datepicker(
{
showOn: "both",
buttonImage: 'images/calender.gif',
buttonImageOnly: true,
beforeShowDay: disabledDays,
dateFormat: "dd.mm.y",
firstDay: 1,
changeFirstDay: false
});
你知道为什么一切在Firefox,Safari,Chrome中运行良好......但在IE 7/8中 NOT ???
谢谢大家。
的Sascha
答案 0 :(得分:1)
问题是那些日期字符串不适合实例化日期对象。以下是如何使“disDays”成为日期数组,这样您就可以直接在回调函数中使用它们而无需一直构造新的Date实例:
var disDays = $.map(navDays.split('|'), function(d) {
var dd = d.split('-');
return new Date(parseInt(dd[0], 10), parseInt(dd[1], 10) - 1, parseInt(dd[2], 10));
});
现在回调代码可以执行此操作:
function disabledDays(date) {
var m = date.getMonth();
var d = date.getDate();
var y = date.getFullYear();
for (var i = 0; i <= disDays.length-1; i++) {
var myDate = disDays[i];
if ((m == (myDate.getMonth())) && (d == (myDate.getDate())) && (y == (myDate.getFullYear())))
{
return [false];
}
}
return [true];
}