Jquery ui datepicker beforeShowDay css更改

时间:2014-04-27 19:00:00

标签: jquery-ui jquery-ui-datepicker

我尝试使用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/

谢谢,

1 个答案:

答案 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