我试过了:
var disabledDays = ["2017-03-16","2017-03-20","2017-03-29","1717-0404-0303"];
jQuery(document).ready(function() {
var unavailableDates = ["2017-03-16","2017-03-13","2017-03-21"];
function unavailable(date) {
// dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
dmy = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
if ($.inArray(dmy, unavailableDates) < 0) {
return [true,"","Book Now"];
} else {
return [false,"","Booked Out"];
}
}
jQuery('#checkin').datepicker({
minDate: 0,
constrainInput: true,
dateFormat: "yy-mm-dd",
beforeShowDay: unavailable
}).on('change', function() {
jQuery(this).valid();
});
});
我无法弄清楚为什么一直说:
无法读取未定义
的属性'inArray'
我尝试了像这样的100个代码,由于同样的错误。所有这些代码在他们的演示中都运行良好。
有什么建议吗?
答案 0 :(得分:0)
该错误意味着$
变量未指向jQuery。您在代码中的所有其他点使用jQuery
这一事实也支持了这一点。要解决此问题,您可以在整个代码中将$.inArray()
更改为jQuery.inArray()
,或者更好的是,您可以为传递给document.ready处理程序的jQuery实例添加别名。
从那里你的日期格式有问题,因为你的数组包含月和日值的前导零,但dmy
变量没有。要解决此问题,您可以使用日期的toISOString()
方法并从中删除时间。试试这个:
jQuery(function($) { // < note the $ alias here
var unavailableDates = ["2017-03-16", "2017-03-13", "2017-03-21"];
function unavailable(date) {
var dmy = date.toISOString().split('T')[0];
if ($.inArray(dmy, unavailableDates) < 0) {
return [true, "", "Book Now"];
} else {
return [false, "", "Booked Out"];
}
}
$('#checkin').datepicker({
minDate: 0,
constrainInput: true,
dateFormat: "yy-mm-dd",
beforeShowDay: unavailable
}).on('change', function() {
$(this).valid();
});
});