Не удается прочитать свойство 'mode' неопределенной ошибки в flatpickr.js - PullRequest
0 голосов
/ 20 сентября 2018

Я использую 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: я собираюсьдо

  1. Функция обновления огня в onClose
  2. Сохраняйте minDate из end выбора времени равным start выбору времени и maxDate из start выбор времени равен end выбор времени всегда.

1 Ответ

0 голосов
/ 02 января 2019

Это произошло для меня при попытке уничтожить экземпляр flatpickr в обратном вызове close (), и в моем случае это, похоже, не принесло никакого вреда.Однако обычно нет необходимости уничтожать экземпляр flatpickr, особенно если вы используете тот же селектор, поскольку он автоматически уничтожит любой предыдущий экземпляр этого селектора (по крайней мере, в соответствии с документацией).

...