我正在尝试从Jquery UI datepicker日历中禁用某些日期。
我的问题是,只有disableDays函数检查的最后一个日期被禁用,而不是全部。为什么它仅禁用上次检查的日期。我应该从此功能返回不同的响应吗?
完整脚本:
var disabled_days = new Array(); // Array of Date() objects
$('.date-picker-day').live('click', function () {
$(this).datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'dd',
beforeShow: function () {
[..]
},
beforeShowDay: disableDays,
onClose: function (dateText, inst) {
}
}).focus();
});
function disableDays(date) {
var ret = false;
$.each(disabled_days, function (k, v) {
if (v.getDate() == date.getDate()) {
console.log(v + 'vs.' + date + ' invalid');
ret = [false];
} else {
ret = [true];
}
});
return ret;
}
答案 0 :(得分:0)
一旦找到否定匹配,您需要停止disabled_days
数组的进一步迭代,否则在下一个值迭代中,日期将不匹配,ret
将再次获得true
}值
function disableDays(date) {
var ret = false;
$.each(disabled_days, function (k, v) {
if (v.getDate() == date.getDate()) {
console.log(v + 'vs.' + date + ' invalid');
ret = [false];
return false;
} else {
ret = [true];
}
});
return ret;
}
演示:Fiddle