将 jquery 日期选择器设置为一周中的某些天不可点击



我有这个函数,它将收集某些日期的数值,以便在另一个禁用这些日期的函数中使用。

/* grab off days*/
function off(){
    for (var key in offDays) {
        if (offDays.hasOwnProperty(key)) {
            return offDays[key];
        }
     }  
 }

例如,将返回 0 , 1 表示星期日和星期一。现在我想利用这些天来禁用日期选择器上的天数,但是当我使用以下代码时,它只会禁用订单中的第一个。我想我需要以某种方式循环,但是如何?

var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
//console.log('Checking (raw): ' + m + '-' + d + '-' + y);
for (i = 0; i < disabledDays.length; i++) {
    if($.inArray((m+1) + '-' + d + '-' + y,disabledDays) !== -1 || new Date() > date) {
        //console.log('bad:  ' + (m+1) + '-' + d + '-' + y + ' / ' + disabledDays[i]);
        return [false];
    }
            if(date.getDay() === off()){
                return [false];
            }

}

检查最后一个 if 语句

尝试

var disabledDays = ["1-24-2014"];
var offDays = {
    "tues": 2,
    "weds": 3,
    "thurs": 4
};
var offds = $.map(offDays, function (day) {
    return day
})
$('input').datepicker({
    beforeShowDay: function (date) {
        var m = date.getMonth(),
            d = date.getDate(),
            y = date.getFullYear(),
            str = (m + 1) + '-' + d + '-' + y;
        if ($.inArray(str, disabledDays) !== -1 || new Date() > date) {
            return [false];
        }
        if ($.inArray(date.getDay(), offds) !== -1) {
            return [false];
        }
        return [true]
    }
})

演示:小提琴

您可以使用beforeShowDay函数来检查给定的日期是否已启用,例如:

beforeShowDay: function (a) {
    var d = a.getFullYear() + '-' + (a.getMonth() + 1) + '-' + a.getDate();
    if (d==='2014-1-20') {//WILL DISABLE 20 Jan 2014
        return [false, "", "disabled date"];
    } else {
        return [true, "", ""];
    }
}

这个小提琴中有一个工作示例

最新更新