我有一个日期选择器分配给几个字段,并在我的beforeShowDay属性中禁用了特定日期的数组。JQuery UI日期选择器禁止选择的月份
.datepicker({ beforeShowDay: disablePaymentDates, minDate: 0, maxDate: afterSixMonths });
我试图禁用用户在所有日期选择器中选择日期的月份。无论如何要做到这一点?
我有一个日期选择器分配给几个字段,并在我的beforeShowDay属性中禁用了特定日期的数组。JQuery UI日期选择器禁止选择的月份
.datepicker({ beforeShowDay: disablePaymentDates, minDate: 0, maxDate: afterSixMonths });
我试图禁用用户在所有日期选择器中选择日期的月份。无论如何要做到这一点?
我想出了一个类似于Roetnig's的解决方案。我将下面的代码添加到beforeShowDay属性调用的函数中。
var monthsToDisable= [];
if ($.inArray(date.getMonth(date), monthsToDisable) > -1) {
$return = false;
$returnclass = "unavailable";
}
然后,我用相应的月份(0-11)填充'monthsToDisable'。由于此数组将根据用户操作进行更新,因此我只需在更新数组后重新应用datepicker即可。
如所指示的datepicker API:
beforeShowDay
类型:Function(日期日期)
默认:空
采用一个日期作为参数的函数而绝返回数组:
[0]:指示是否可以选择此日期的真/假[1]:要添加到日期单元格的CSS类名称或默认演示文稿的“”[2]:此日期的可选弹出工具提示
该函数在日期选择器中显示前每天都会调用。
.datepicker({
minDate: 0,
maxDate: afterSixMonths,
beforeShowDay: function(date) {
var dd = date.getDate();
if ($.inArray(dd, disablePaymentDates)!= -1) {
return [false, "", "disabled" ];
} else {
return [true, "", "enabled" ];
}
}
});
或者,您可以禁用使用moment.js
var disableRangeStartDate = '2017-10-29';
var disableRangeEndDate = '2018-04-18';
.datepicker({
isInvalidDate: function(arg){
var thisMonth = arg._d.getMonth()+1;
if (thisMonth<10){thisMonth = "0"+thisMonth;}
var thisDate = arg._d.getDate();
if (thisDate<10){thisDate = "0"+thisDate;}
var thisYear = arg._d.getYear()+1900;
var thisCompare = thisYear +"-"+ thisMonth +"-"+ thisDate;
return moment(thisCompare).isBetween(disableRangeStartDate, disableRangeEndDate);
}
});
什么是 “disablePaymentDates” 日期范围?数组 ?它应该是一个以date为参数的函数。 http://api.jqueryui.com/datepicker/#option-beforeShowDay – roetnig
它是一个以mm/dd格式保存日期的数组。 – Tyharo