我想在每个datepicker年份中禁用不同的月份,特别是开始年份和结束年份。我知道我可以使用beforeShowDay
方法运行一些可以返回true和false的代码来启用/禁用日期。现在我想禁用2005年9月 - 12月以及2009年11月和12月的月份,但我不完全确定如何做到这一点。
当我退出date.getYear()
时,我会得到像104和105这样的数字,当我期望得到2014年和2015年等时,所以我不确定如何检查年份然后继续并设置真/基于我创建的最小和最大数组的错误值,它将保留我想要排除的月份。
JS
var minYear = 2005,
maxYear = 2009,
excludeMinYearMonths = [8, 9, 10, 11],
excludeMaxYearMonths = [10, 11];
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
yearRange: minYear + ':' + maxYear,
beforeShowDay: function (date) {
console.log(date.getYear());
if (date.getYear() === minYear) {
if ($.inArray(date.getMonth(), excludeMinYearMonths) > -1) {
return [false, ''];
}
return [true, ''];
}
if (date.getYear() === maxYear) {
if ($.inArray(date.getMonth(), excludeMaxYearMonths) > -1) {
return [false, ''];
}
return [true, ''];
}
},
defaultDate: '01/01/05'
});
Jsfiddle: http://jsfiddle.net/qA9NT/18/
答案 0 :(得分:1)
您可以先阅读getYear()
的文档。在那里,您将看到为什么使用getFullYear()
。
getYear()
方法在指定日期返回年份减去1900 到当地时间。由于getYear()
没有返回完整年份,因此不再使用它,并且已被替换为getFullYear()
方法。
此外,您忘记为非排除日期定义默认行为。
var minYear = 2005, maxYear = 2009, excludedMonths = {
2005: [8, 9, 10, 11],
2009: [10, 11]
};
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
yearRange: minYear + ':' + maxYear,
beforeShowDay: function (date) {
if (excludedMonths.hasOwnProperty(date.getFullYear())) {
if ($.inArray(date.getMonth(), excludedMonths[date.getFullYear()]) > -1) {
return [false, ''];
}
}
return [true, ''];
},
defaultDate: '01/01/05'
});