如何在jQuery UI Datepicker上为过去的日期设置不同的类?

时间:2013-05-09 17:18:04

标签: jquery jquery-ui jquery-ui-datepicker

有没有办法将jQuery UI Datepicker的先前选定的日期设置为其他类?

我正在处理的场景是有一个包含即将发生的事件和之前事件的日历。即将发生的事件现在会将一个类应用于它们并进行相应的样式设置。我需要对之前有事件的日期做同样的事情。

例如:

5月10日将是彩色金色(高亮类),因为这是即将举行的活动。

5月8日会变成浅灰色(传递事件类),因为它是之前的事件。

这是我到目前为止(从beforeShowDay开始工作):

beforeShowDay: function(date) {
                    var result = [true, '', null],
                        afterOrToday = $.grep(events, function(event) {

                            var eventDate = new Date(event.Date),
                                todaysDate = new Date();

                            return date.valueOf() === eventDate.valueOf();
                        }),
                        beforeToday = $.grep(events, function(event) {

                            var eventDate = new Date(event.Date),
                                todaysDate = new Date();

                            return date.valueOf() < eventDate.valueOf();
                        });

                    if (afterOrToday.length)
                        result = [true, 'highlight', null];
                    else if (beforeToday.length)
                        result = [true, 'passed-event', null];

                    return result;
                }

2 个答案:

答案 0 :(得分:2)

请参阅此示例http://jsbin.com/imiyez/1/edit

您可以比较没有valueOf的日期:

[true, ('past' if date < yesterday )]

答案 1 :(得分:1)

不确定这是否是最有效的方法,并且会喜欢改进质量的建议,但这是我提出的解决方案。

beforeShowDay: function(date) {
    var result = [true, '', null],
        today = $.grep(events, function(event) {

            var eventDate = new Date(event.Date);

            return date.valueOf() === eventDate.valueOf();
        }),
        beforeToday = $.grep(events, function(event, i) {

            var eventDate = new Date(event.Date),
                isPast = false;

            if (date.valueOf() === eventDate.valueOf())
                if (date.valueOf() < new Date().valueOf())
                    isPast = true;

            return isPast;
        });

    if (today.length)
        result = [true, 'highlight', null];

    if (beforeToday.length)
        result = [true, 'past-event', null];

    return result;
}

这将在我过去的日期中添加一个类,其中包含两个单独的类中的事件和未来日期。感谢大家的帮助!