【发布时间】:2021-09-07 07:16:09
【问题描述】:
我需要显示过去的日期。我目前正在显示今天的日期和未来的日期。过去的日期目前不可选择。我需要知道如何使它们可选择。
目前,此代码显示过去 3 个月,但它只允许用户选择今天的日期或未来的日期。我需要日期选择器范围来允许用户选择过去的日期。
$(".datepicker").datepicker({
minDate: 0,
numberOfMonths: [3, 1],
beforeShowDay: function(date) {
var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
// console.log(moment.utc(date1).format("YYYY-MM-DD"));
// console.log(moment.utc(date2).format("YYYY-MM-DD"));
// instantiate array to hold all dates selected in date range
var getDaysArray = function(s, e) {
for (var a = [], d = new Date(s); d <= e; d.setDate(d.getDate() + 1)) {
a.push(new Date(d));
}
return a;
};
// daylist contains all dates between both dates selected
var daylist = getDaysArray(date1, date2);
daylist.map((v) => v.toISOString().slice(0, 10)).join("")
// console.log(daylist);
// iterate over dates selected to populate table data for days selected
for (var i = 0; i < daylist.length; i++) {
// console.log(daylist[i]);
// console.log(moment.utc(daylist[i]).format("YYYY-MM-DD"));
}
return [
true,
date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""
];
},
onSelect: function(dateText, inst) {
var date1 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input1").val());
var date2 = $.datepicker.parseDate($.datepicker._defaults.dateFormat, $("#input2").val());
var selectedDate = $.datepicker.parseDate($.datepicker._defaults.dateFormat, dateText);
if (!date1 || date2) {
$("#input1").val(dateText);
$("#input2").val("");
$(this).datepicker();
} else if (selectedDate < date1) {
$("#input2").val($("#input1").val());
$("#input1").val(dateText);
$(this).datepicker();
} else {
$("#input2").val(dateText);
$(this).datepicker();
}
}
});
【问题讨论】:
-
更改或删除
minDate: 0。 jQueryUI 有非常全面的文档。如果您不确定某个设置,我建议您在此处查看:api.jqueryui.com/datepicker/#option-minDate -
@RoryMcCrossan 这很有效,谢谢
标签: javascript jquery datepicker date-range