datepicker错误=未捕获的TypeError:无法读取未定义的属性“0”

时间:2013-05-22 17:44:16

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

无法使用jQueryUI datepicker选项beforeShowDay

我尝试过不同的帮助主题,但我无法使用。

我收到此错误

  

未捕获的TypeError:无法读取属性' 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>

2 个答案:

答案 0 :(得分:13)

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

来自documentation

  

beforeShowDay

     

类型:功能(日期日期)

     

将日期作为参数并且必须返回数组

的函数
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;
        }
    });
});

FIDDLE

答案 1 :(得分:3)

  

<强> 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' : '')];