我尝试使用datepicker来显示忙/免费日历。 我使用beforeShowDay在两个类之间切换,但它不起作用。最后一天适用于所有日期的课程。
var SelectedDates = {};
SelectedDates['2014-05-04'] = true;
SelectedDates['2014-05-03'] = true;
SelectedDates['2014-05-02'] = true;
$(function() {
$("#datepicker").datepicker({
numberOfMonths: 3,
showCurrentAtPos: 1,
beforeShowDay: function (date) {
var dateFormatted = date.getFullYear() +
"-" + (date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth()) +
"-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
console.log("date js: " + dateFormatted + " highlight: " + SelectedDates[dateFormatted]);
var highlight = SelectedDates[dateFormatted];
if (highlight === true) {
console.log("add busy class to " + dateFormatted);
return [false, 'Busy'];
}
console.log("add free class to " + dateFormatted);
return [true, 'Free'];
}
});
});
这里是小提琴:http://jsfiddle.net/b22Bz/
谢谢,
答案 0 :(得分:1)
根据Javascript(0 = 1月,1 = 2月等),月份为0,因此在2014-05-04日期调用getMonth()
时,它将返回4而不是5。
我修改了您设置dateFormatted
的代码行:
var dateFormatted = date.getFullYear() +
"-" + (date.getMonth() < 10 ? "0" + date.getMonth() : date.getMonth()) +
"-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
为:
var dateFormatted = date.getFullYear() +
"-" + (date.getMonth() < 10 ? "0" + (date.getMonth()+1) : (date.getMonth()+1)) +
"-" + (date.getDate() < 10 ? "0" + date.getDate() : date.getDate());
查看更新的小提琴here