Из исследования на этом сайте я нашел способ использовать 2 datepickers. Если вы выбираете дату на первой, вторая будет автоматически показывать с выбранной датой в качестве нового minDate. Вы можете увидеть это в действии на моем тестовом сервере здесь: http://www.zinius.nl/trips
Проблема, с которой я столкнулась, возникает в этой ситуации: выберите поле "Дата заезда", но не выбирайте дату и нажмите в другом месте. Вы не сможете получить всплывающее окно datepicker в поле "Дата заезда", пока не обновите всю страницу или не выберите дату выписки.
Это код, который я использую:
$( "#datepicker1" ).datepicker({
showOn: 'both',
buttonImage: 'images/ico/calendar.png',
buttonImageOnly: true,
minDate: 0,
firstDay: 0,
dateFormat: 'mm-dd-yy',
changeMonth: false,
numberOfMonths: 1,
onClose: function( selectedDate ) {
var minDate = $(this).datepicker('getDate');
var newMin = new Date(minDate.setDate(minDate.getDate() + 1));
$( "#datepicker2" ).datepicker( "option", "minDate", newMin );
$( "#datepicker2" ).datepicker( "show" );
}
});
$( "#datepicker2" ).datepicker({
showOn: 'both',
buttonImage: 'images/ico/calendar.png',
buttonImageOnly: true,
minDate: '+1d',
changeMonth: false,
firstDay: 0,
dateFormat: 'mm-dd-yy',
numberOfMonths: 1,
onClose: function( selectedDate ) {
}
});
Я попытался заменить onClose на onSelect. Это решает проблему, но когда я выбираю дату на datepicker1, datepicker2 появляется и исчезает со вспышкой.
У кого-нибудь есть решение, чтобы заставить это работать должным образом?
Спасибо, Гильяно
Попробуйте изменить функцию onClose
на первом datePicker с помощью
...,
onClose: function( selectedDate ) {
var minDate = $(this).datepicker('getDate');
if(minDate){
var newMin = new Date(minDate.setDate(minDate.getDate() + 1));
$( "#datepicker2" ).datepicker( "option", "minDate", newMin );
$( "#datepicker2" ).datepicker( "show" );
}
}
Посмотрев на консоль, я вижу, что эта ошибка регистрируется:
Невозможно вызвать метод getDate из null
Это означает ваше выражение:
var minDate = $(this).datepicker('getDate');
вызывает проблему. Что вы можете сделать, так это сначала проверить, действительно ли selectedDate
(переданный на onClose
вызов onClose
) действителен или нет, прежде чем пытаться getDate
на нем.
onClose: function(selectedDate) {
if (selectedDate) {
...
}
}