4

我想使用 Datepicker 突出显示特定日期。这是我的最新代码:

<script type="text/javascript">

var dates = [30/04/2010, 01/05/2010];

$(function(){

    $('#datepicker').datepicker({
        numberOfMonths: [2,3],                
        dateFormat: 'dd/mm/yy',
        beforeShowDay: highlightDays
    });

    function highlightDays(date) {
        for (var i = 0; i < dates.length; i++) {
            if (dates[i] == date) {
                          return [true, 'highlight'];
                  }
          }
          return [true, ''];

 }   

});
 </script>

我的 CSS 是:

#highlight, .highlight {
    background-color: #cccccc;
}

好吧,日历出现了,但没有突出显示。我的代码中的问题在哪里?如果有人可以提供帮助,那就太好了。

另一个选项/解决方案可能是:禁用所有日期,但仅使数组中的日期可用。

谢谢!

4

2 回答 2

10

告诉你一些问题...

1. var 日期 = [2010 年 4 月 30 日,2010 年 1 月 5 日];

不会按预期存储您的日期...它将进行数学运算...

2.将其更改为字符串,但格式如下:mm/dd/yy
所以,您应该有类似的内容:

var dates = ['04/30/2010', '05/01/2010'];

3.使用这个功能:

function highlightDays(date) {
        for (var i = 0; i < dates.length; i++) {
            if (new Date(dates[i]).toString() == date.toString()) {              
                          return [true, 'highlight'];
                  }
          }
          return [true, ''];

 } 

4. CSS 为:

td.highlight {
    background-color: red;
    border: 1px blue solid;
}

5.  演示

于 2010-04-29T07:02:32.533 回答
3

时区有问题。

function highlightDays(date) {
    for (var i = 0; i < dates.length; i++) {
        if (new Date(dates[i]).toString().substr(0, 16) == date.toString().substr(0, 16)) {
            return [true, 'highlight'];
        }
    }
    return [true, ''];
 } 
于 2010-12-07T16:47:39.060 回答