禁用特定月份JqueryUI datepicker

时间:2013-08-23 01:53:35

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

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

}

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

1 个答案:

答案 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];
}