Я использую сторонний jQuery UI Timepicker
который можно найти здесь, в этом репозитории git: jQuery UI Timepicker
Я реализовал селектор диапазона datetime, просто используя два элемента ввода datetimepicker
которые передают выбранную дату в качестве другого поля min или max datetime. Он работает, и задано время min и max datetime, но когда я удаляю один из полей, он не сбрасывает другие поля min/max time.
Например, допустим, что я установил свое поле from
поля 4/23 5:00p
. Мой to
поле не может быть установлена ранее, чем 4/23 5:00p
. Когда я удаляю значение from from
, он должен сбросить to
min до 12:00a
так как from
больше не установлен, но он остается в 5:00p
даже если функция minDateTime
была установлена minDateTime
null
.
Как я могу получить время, чтобы по-настоящему сбросить настройки по умолчанию после установки в первый раз?
var fromDatepickerPointer = fromValueFieldPointer.inputElement;
var toDatepickerPointer = toValueFieldPointer.inputElement;
function fromOnCloseFunction(selectedDateTime, inst) {
if(fromDatepickerPointer.val() != '') {
var minTime = new Date($(this).datetimepicker('getDate').getTime());
console.log("minTime: " + minTime);
console.log("from SelectedDateTime: " + selectedDateTime);
toDatepickerPointer.datetimepicker('option', 'minDateTime', minTime);
toDatepickerPointer.datetimepicker('option', 'minDate', minTime);
} else {
console.log("from should be set to null but isn't");
toDatepickerPointer.datetimepicker('option', 'minDateTime', null);
toDatepickerPointer.datetimepicker('option', 'minDate', null);
}
}
fromDatepickerPointer.datetimepicker('option', 'onClose', fromOnCloseFunction);
function toOnCloseFunction(selectedDateTime, inst) {
if(toDatepickerPointer.val() != '') {
var maxTime = new Date($(this).datetimepicker('getDate').getTime());
console.log("maxTime: " + maxTime);
console.log("to SelectedDateTime: " + selectedDateTime);
fromDatepickerPointer.datetimepicker('option', 'maxDate', maxTime);
fromDatepickerPointer.datetimepicker('option', 'maxDateTime', maxTime);
} else {
console.log("to should be set to null but isn't");
fromDatepickerPointer.datetimepicker('option', 'maxDate', null);
fromDatepickerPointer.datetimepicker('option', 'maxDateTime', null);
}
}
toDatepickerPointer.datetimepicker('option', 'onClose', toOnCloseFunction);
Я честно чувствую, что это проблема с самим плагином, а не с моим кодом, но я думаю, вы можете судить об этом.
Я нашел решение этой проблемы. Чтобы сбросить значения min и max. Я устанавливаю maxDateTime
и minDateTime
в new Date('00:00:00')
вместо null
когда значение поля пуст.