是否有任何(简单)方法将jQuery UI Datepicker设置为禁止选择特定的预定日期?
我能够让this approach正常工作,但是,它会产生一个空错误,导致它无法在IE中显示。
'natDays [...]。0'为空或不是对象
提前致谢!
更新:如果我添加了一些代码,可能会有帮助,对吗?无论如何,大部分内容都直接来自上述主题:
natDays = [
[7, 23], [7, 24], [8, 13], [8, 14],
];
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1
&& date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
$(function() {
$("#datepicker").datepicker({
inline: true,
minDate: new Date(2009, 6, 6),
maxDate: new Date(2009, 7, 14),
numberOfMonths: 2,
hideIfNoPrevNext: true,
beforeShowDay: $.datepicker.noWeekends,
altField: '#alternate',
});
});
再次感谢!
答案 0 :(得分:14)
以下是禁用所选日期的方法:
var unavailableDates = ["9-5-2011","14-5-2011","15-5-2011"];
function unavailable(date) {
dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" + date.getFullYear();
if ($.inArray(dmy, unavailableDates) < 0) {
return [true,"","Book Now"];
} else {
return [false,"","Booked Out"];
}
}
$('#iDate').datepicker({ beforeShowDay: unavailable });
答案 1 :(得分:9)
您是否尝试使用前面的'var'关键字正确声明natDays?
另外 - 你的natDays定义结尾处有一个额外的逗号。
natDays [i] [2]不会起作用,因为你的阵列中只有2个项目 - 试试''
此外,您还需要正确设置您的beforeShowDay函数名称 - 看起来甚至不会调用您的自定义函数
答案 2 :(得分:7)
您可以使用beforeShowDay
选项。我需要在本月28日之后的任何一天禁用。这是我的代码。
$('.datepicker').datepicker({
dateFormat: "yy-mm-dd",
beforeShowDay: function(date) {
var day = date.getDate();
if (day > 28) {
return [false];
} else {
return [true];
}
}
});
以下是有关它的更多信息:http://api.jqueryui.com/datepicker/#option-beforeShowDay
传递给beforeShowDay回调的日期变量是一个JavaScript日期对象,因此可以使用各种库对其进行格式化,可以使用date.getTime()等检索时间戳。
答案 3 :(得分:1)
beforeShowDay: $.datepicker.noWeekends,
将是
beforeShowDay: noWeekendsOrHolidays,
答案 4 :(得分:1)
IE的问题很可能在以下几行:
altField: '#alternate',
});
尝试删除逗号符号,它应该有效。
答案 5 :(得分:0)
var unavailableDates = ["19-8-2014","14-9-2014"];
function unavailable(date) {
dmy = date.getDate() + "-" + (date.getMonth()+1) + "-" +date.getFullYear();
if ($.inArray(dmy, unavailableDates) < 0) {
return [true,"","Book Now"];
} else {
return [false,"","Booked Out"];
}
}
$('#iDate').datepicker({ beforeShowDay: unavailable });