我正在创建一个包含jQuery UI Datepicker的预订表单,现在我有一个我需要帮助的主要问题:有些旅行只有某些日子活跃,并且只能在某些月份出售,因为例如旋风季节。
禁用特定工作日的功能非常完美,但我不知道如何停用完整月份(例如10月)。可能吗?
任何建议都会有所帮助,这是我的代码,请告诉我是否应该更好地解释我的问题,或者是否应该添加我的代码的其他部分。提前谢谢!
$.datepicker.setDefaults( $.datepicker.regional[ getLanguage() ] );
$( "#booking" ).datepicker({
showOn: "button",
dateFormat : 'yy/mm/dd',
buttonText: "Select",
beforeShowDay: disableSpecificWeekDays,
changeMonth: true,
changeYear: true,
minDate: 0
}
);
// 0 = monday, 1 = tuesday, 2 = wednesday, 3 = thursday, 4=friday, 5 = saturday, 6=sunday
var daysToDisable = [1, 4, 6];
function disableSpecificWeekDays(date) {
var day = date.getDay();
for (i = 0; i < daysToDisable.length; i++) {
if ($.inArray(day, daysToDisable) != -1) {
return [false];
}
}
return [true];
}
以此代码为例,我可以停用特定日期,但要停用整个月我需要写每个日期,在某些情况下,我需要至少停用三到四个月每次旅行。
var $disableMonths = new Array("2013/10/01","2013/10/02","2013/10/03", "...");
function disableSpecificMonths(mydate){
var $return = true;
var $returnclass ="available";
$checkdate = $.datepicker.formatDate('yy/mm/dd', mydate);
for(var i = 0; i < $disableMonths.length; i++) {
if($disableMonths[i] == $checkdate) {
$return = false;
$returnclass= "unavailable";
}
}
return [$return,$returnclass];
}
但是,如果不可能停用一个完整的月份,我会很想知道如何混合这两个功能,所以我将停用特定的工作日和特定日期。
答案 0 :(得分:2)
您可以将“禁用功能”更新为以下内容:
var daysToDisable = [1, 4, 6];
var monthsToDisable = [9];
function disableSpecificWeekDays(date) {
var day = date.getDay();
if ($.inArray(day, daysToDisable) != -1) {
return [false];
}
var month = date.getMonth();
if ($.inArray(month, monthsToDisable) != -1) {
return [false];
}
return [true];
}