将jquery datepicker设置为一周中的某些天不可点击

时间:2014-01-15 02:47:46

标签: javascript jquery datepicker

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

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

        }
     }  
 }

例如,对于星期日和星期一,将返回0,1。现在我想用那些日子来禁用datepicker上的日子,但是当我使用下面的代码时,它只会禁用顺序中的第一个。我想我需要以某种方式循环,但是如何?

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语句

2 个答案:

答案 0 :(得分:1)

尝试

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

演示:Fiddle

答案 1 :(得分:0)

您可以使用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, "", ""];
    }
}

此工作示例位于此 fiddle