5

无法让 jQueryUI 日期选择器选项beforeShowDay工作。

我尝试了不同的帮助主题,但我无法让它发挥作用。

我收到这个错误

未捕获的类型错误:无法读取未定义的属性“0”

这是我的 JS。但它似乎不起作用

<script type="text/javascript">
jQuery(document).ready(function () {
    var your_dates = [new Date(13, 5, 5), new Date(13, 5, 10)];
    jQuery("div#event-calender").datepicker({
        beforeShowDay: function (date) {
            if (jQuery.inArray(date.toString(), your_dates) != -1) {
                return [true, 'highlight'];
            }
        }
    });
});
</script>
4

2 回答 2

16

您需要始终返回一个数组,而不仅仅是在条件匹配时。

文档中:

演出前

类型:函数(日期日期)

以日期为参数且必须返回数组的函数

jQuery(document).ready(function () {
    var your_dates = [new Date(13, 5, 5), new Date(13, 5, 10)];
    jQuery("div#event-calender").datepicker({
        beforeShowDay: function (date) {
            var arr;
            if (jQuery.inArray(date.toString(), your_dates) != -1) {
                arr = [true, 'highlight'];
            }else {
                arr = [true, ''];
            }
            return arr;
        }
    });
});

小提琴

于 2013-05-22T17:53:32.420 回答
4

beforeShowDay
一个以日期为参数的函数,必须返回一个数组:

  • true/false 指示此日期是否可以通过 CSS 选择
  • 类名添加到日期的单元格或“”为默认值
  • 演示此日期的可选弹出工具提示

在日期选择器中每天调用该函数,然后再显示

改变你beforeShowDay

beforeShowDay: function (date) {
    if (jQuery.inArray(date.toString(), your_dates) != -1) {
        return [true, 'highlight'];
    } else {
        return [true, ''];
    }
}

编辑
要么更改your_dates

var your_dates = [new Date(2013,5,5).toString(), new Date(2013,5,10).toString()];

或使用类似的东西而不是jQuery.inArray(...)

var found = your_dates.filter(function(d) {
                return date.getTime() === d.getTime();
            }).length > 0;

return [true, (found ? 'highlight' : '')];
于 2013-05-22T17:53:39.390 回答