我遇到了这种情况;问题是en/disabled dates take precedence over each other and over min/maxDate。
如果您的合格日期范围不那么开放,您可以全押enabledDates,如in this answer。
我的项目包含 datetimepicker 作为 js 文件,所以我最终添加了一个新选项,alwaysEnabledDate。
第一次发帖,所以这是我最好的解释我是如何做到的,完全在bootstrap-datetimepicker.js:
- 在
isValid 定义下,targetMoment.isValid() 检查之后和disabledDates、enabledDates 等检查之前:
if (options.alwaysEnabledDate && targetMoment.isSame(moment(options.alwaysEnabledDate), granularity)) {
return true;
}
- 在以
$.fn.datetimepicker.defaults = {开头的行后,添加:alwaysEnabledDate: false,,例如:
$.fn.datetimepicker.defaults = {
alwaysEnabledDate: false,
// ... existing code
}
- 在标题为“公共 API 函数”的区域下(您可以看到
picker.toggle、picker.show、picker.ignoreReadOnly 等的定义):
picker.alwaysEnabledDate = function (alwaysEnabledDate) {
if (arguments.length === 0) {
return options.alwaysEnabledDate ? options.alwaysEnabledDate.clone() : options.alwaysEnabledDate;
}
if ((typeof alwaysEnabledDate === 'boolean') && alwaysEnabledDate === false) {
options.alwaysEnabledDate = false;
update();
return picker;
}
if (typeof alwaysEnabledDate === 'string') {
if (alwaysEnabledDate === 'now' || alwaysEnabledDate === 'moment') {
alwaysEnabledDate = getMoment();
}
}
var parsedDate = parseInputDate(alwaysEnabledDate);
if (!parsedDate.isValid()) {
throw new TypeError('alwaysEnabledDate() Could not parse date parameter: ' + alwaysEnabledDate);
}
options.alwaysEnabledDate = parsedDate;
update();
return picker;
};
鉴于上述更改,您的用法将是:
$("#datepicker").datetimepicker({
format: "YYYY-MM-DD, ddd",
showClear: true,
alwaysEnabledDate: '2020-06-04',
minDate: new Date()
});
In this screenshot,我已使用 6/12 的 minDate 和 6/3 的 alwaysEnabledDate 进行初始化。
(警告:我只用day粒度测试过这种方法)