Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用特定月份JqueryUI日期选择器_Javascript_Jquery Ui_Jquery Ui Datepicker - Fatal编程技术网

Javascript 禁用特定月份JqueryUI日期选择器

Javascript 禁用特定月份JqueryUI日期选择器,javascript,jquery-ui,jquery-ui-datepicker,Javascript,Jquery Ui,Jquery Ui Datepicker,我正在创建一个包含jQueryUIDatePicker的预订表单,现在我有一个需要帮助的主要问题:一些旅行只有特定的活动日,并且只能在特定的月份出售,因为例如飓风季节 禁用特定工作日的功能非常完美,但我不确定如何禁用完整月份,例如10月份。可能吗 任何建议都会很有帮助,这是我的代码,请让我知道我是否应该更好地解释我的问题,或者我是否应该添加代码的其他部分。提前谢谢 $.datepicker.setDefaults( $.datepicker.regional[ getLanguage() ] )

我正在创建一个包含jQueryUIDatePicker的预订表单,现在我有一个需要帮助的主要问题:一些旅行只有特定的活动日,并且只能在特定的月份出售,因为例如飓风季节

禁用特定工作日的功能非常完美,但我不确定如何禁用完整月份,例如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];

}

但是,如果不可能停用一个完整的月份,我很想了解如何混合这两个功能,因此我将停用特定的星期和日期

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

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

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

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

谢谢,它确实有效,但不确定为什么它会在11月而不是10月停用。想法?啊,是的,对不起,月份数是从0到11,而不是从1到12。我更新了代码。有没有具体的原因可以从0到11而不是从1到12计算,我对这一点很陌生,我很想了解:没关系,我已经在做一项研究了,非常感谢!另外,当您使用$.inArray时,您不需要for循环,请参阅我的更新代码。谢谢,它确实有效,但不确定为什么它会在11月而不是10月停用。想法?啊,是的,对不起,月份数是从0到11,而不是从1到12。我更新了代码。有没有具体的原因可以从0到11而不是从1到12计算,我对这一点很陌生,我很想了解:没关系,我已经在做一项研究了,非常感谢!另外,在使用$.inArray时,不需要for循环,请参阅我的更新代码。