2

我正在创建一个包含 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];

}

但是,如果不可能停用一个完整的月份,我很想知道如何混合这两个功能,所以我将停用特定的工作日和特定日期。

4

1 回答 1

4

您可以将“禁用功能”更新为以下内容:

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];
}
于 2013-08-23T02:12:30.937 回答