我有这个函数会收集某些天数值,以便在另一个将禁用那些日子的函数中使用。
/* 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语句
答案 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