如何在jQueryUiDatepicker中使用BeforeShowDay禁用特定日期和日期?

时间:2017-09-20 16:50:43

标签: datepicker jquery-ui-datepicker

我已经在jQueryUiDatepicker中运行了代码,它禁用星期五和星期六以及所有前几天(加上2天)。我的问题是尝试向现有的Datepicker代码添加2个特定日期,这些代码也将禁用这些日期。

这是我在jQueryUiDatepicker的第92行的现有代码:

beforeShowDay: function(date) {
var show = true;
if(date.getDay()==5||date.getDay()==6) show=false
return [show];
},
    beforeShow: function(){
    var dateTime = new Date();
    var hour = dateTime.getHours();
    //If Hour is greater or equals to 8AM
    if(hour  >= 08){
        //Disable all past days including tomorrow and today
        $(this).datepicker( "option", "minDate", "+2" );
    }
},

我试图在2017年10月18日和19日停用并失败,这是我在上面的代码下直接添加的代码:

beforeShowDay: var array = ['18/10/2017', '19/10/2017']

$('input').datepicker({
beforeShowDay: function(date){
    var string = jQuery.datepicker.formatDate('dd/mm/yy', date);
    return [ array.indexOf(string) == -1 ]
    },

我的问题是如何禁用所有以前的日期,所有星期五和星期六以及10月份的这两个日期?

注意#此编码必须在jquery.ui.datepicker中完成,而不是html中的脚本

1 个答案:

答案 0 :(得分:1)

希望这有帮助

使用inArray代替indexOf,您还可以使用minDate

停用之前的所有日期
var array = ["18/10/2017", "19/10/2017"];
$(function() {
    $('input').datepicker({
        minDate: new Date(),
        beforeShowDay: function (date) {
        $thisDate = date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear();
    var day = date.getDay();
    if ($.inArray($thisDate, array) == -1&&day!=5&&day!=6) {
        return [true, ""];
    } else {
        return [false, "", "Unavailable"];
    }
}
    });
});

DEMO