我有这个函数,它将收集某些日期的数值,以便在另一个禁用这些日期的函数中使用。
/* 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, "", ""];
}
}
这个小提琴中有一个工作示例