Я использую 2 экземпляра календаря flatpickr, чтобы показать интервал времени start
и end
.Когда пользователь изменяет время start
, я дополнительно обновляю значение minDate
для времени end
и аналогично при любом обновлении во время end
я обновляю значение maxDate
времени start
.Мой код выглядит следующим образом:
onPageLand() {
var startTimeConfig = {
datetime: {
enableTime: true,
maxDate: new Date(<<--initial end time-->>),
dateFormat: "Y-m-d H:i",
defaultDate: new Date(<<--initial start time-->>),
onClose: function (selectedDates, dateStr, instance) {
let changedStartTime = new Date(dateStr);
if (startTime.toString() != changedStartTime.toString()) {
startTime = changedStartTime;
//take update actions
}
endTimeConfig.datetime.minDate = changedStartTime;
renderCalendar(startTimeConfig, endTimeConfig, calendarInstances);
},
onChange: function () {
}
}
}
var endTimeConfig = {
datetime: {
enableTime: true,
minDate: new Date(<<--initial start time-->>),
dateFormat: "Y-m-d H:i",
defaultDate: new Date(<<--initial end time-->>),
onClose: function (selectedDates, dateStr, instance) {
let changedEndTime = new Date(dateStr);
if (endTime.toString() != changedEndTime.toString()) {
endTime = changedEndTime;
//take update actions
}
startTimeConfig.datetime.maxDate = changedEndTime;
renderCalendar(startTimeConfig, endTimeConfig, calendarInstances);
},
onChange: function() {
}
}
}
renderCalendar(startTimeConfig, endTimeConfig, calendarInstances);
}
function renderCalendar(startTimeConfig, endTimeConfig, calendarInstances) {
var configs = [startTimeConfig, endTimeConfig];
if (configs.length === calendarInstances.length) {
for (var i = 0; i < calendarInstances.length; i++) {
console.log(configs[i][calendarInstances[i].getAttribute("data-id")]);
flatpickr(calendarInstances[i], configs[i][calendarInstances[i].getAttribute("data-id")] || {});
}
}
}
В приведенном выше коде, когда я изменяю значение в start
или end
дате и закрываю всплывающее окно календаря, я получаю следующую ошибку на консоли:
Uncaught TypeError: Невозможно прочитать свойство 'mode' undefined в S (calendar.js: 630) в HTMLDocument.(calendar.js: 489) S @ calendar.js: 630 (анонимный) @ calendar.js: 489
Как решить вышеуказанную проблему?
PS: я собираюсьдо
- Функция обновления огня в
onClose
- Сохраняйте
minDate
из end
выбора времени равным start
выбору времени и maxDate
из start
выбор времени равен end
выбор времени всегда.