#jquery #datetimepicker
#jquery #datetimepicker
Вопрос:
В настоящее время я использую надстройку jQuery datetimepicker отсюда
Это работает практически идеально, но я в тупике, как добавить к нему небольшую функциональность. В настоящее время у меня есть два экземпляра на странице, один для времени начала и один для времени окончания. Когда я выбираю время начала, я хотел бы автоматически заполнить время окончания временем начала 1 час.
Можно ли этого добиться вообще без расширения основного скрипта?
Ответ №1:
да, это расширяет jQuery-UI Datepicker, который имеет разные обратные вызовы для обработки выбора
вы можете ознакомиться с документацией onSelect и использовать ее в своем timepicker
$('#example').datetimepicker({
onSelect: function(){
//add 1 hour to start time
}
});
Ответ №2:
Следующее действие добавит один час к значению даты окончания.
$('#dtStartDate').datetimepicker({
onSelect: function(){
var startDate = $('#dtStartDate').datetimepicker('getDate'));
var endDate = new Date(parseFloat(startDate.setHours(startDate.getHours() 1)))
//Get the ending date datepart
var endDateDatePart = endDate.getFullYear() '/' endDate.getMonth() '/' endDate.getDate();
//calculate the ending date time part including AM/PM
var endDateTimePart;
if (endDate.getHours() > 12) { endDateTimePart = endDate.getHours()-12 ':' endDate.getMinutes() ' PM';} else {endDateTimePart = endDate.getHours() ':' endDate.getMinutes() ' AM';}
$('#dtEndDate').datetimepicker('setDate', endDateDatePart ' ' endDateTimePart );
}
});
Комментарии:
1. Хорошо, я думаю, что у меня это очень близко, но я получаю странные результаты в поле время начала, так как иногда время не вводится в поле. Не могли бы вы взглянуть? `// Увеличьте время окончания на один час, когда выбрано время начала. $ («.end»).datetimepicker({ampm: true,stepMinute: 10}); $(‘.start’).datetimepicker({ ampm: true,stepMinute: 10, onSelect: function(){ var start = $(‘.start’).datetimepicker(‘getDate’); var end = новая дата (parseFloat(start.setHours(start. Время получения() 1))); $(‘. end’).datetimepicker(‘setDate’, end ); } });`
2. @jwburnside: если вы удалите событие onSelect при выборе начальной даты, будет ли поле времени начала заполняться каждый раз?
3. Да, поле времени начала работает так, как задумано, если я просто использую исходный код <br /> $ («.start»).datetimepicker({ampm: true,stepMinute: 10});<br /> $ («.end»).datetimepicker({ampm: true,stepMinute: 10});<br /> Может быть, я неправильно инициализирую экземпляры datetimepicker при попытке использовать ваш код?
4. Попробуйте изменить var StartDate = $(‘#dtStartDate’).datetimepicker(‘getDate’)); на var StartDate = $ (this). datetimepicker(‘getDate’));
5. Нет, все та же ошибка. Кажется, это работает при первом выборе дня, а затем времени, но впоследствии оно отключается. Странно. Обновление Похоже, что виновата последняя строка: $(‘.end’).datetimepicker(‘setDate’, end);
Ответ №3:
В нижней части страницы показана функция получения и установки даты и времени.
var ex13 = $('#example13');
ex13.datetimepicker();
$('#example13_setdt').click(function(){
ex13.datetimepicker('setDate', (new Date()) );
});
$('#example13_getdt').click(function(){
alert(ex13.datetimepicker('getDate'));
});
Не могли бы вы это использовать? Или, конечно, вам придется добавить час к получаемой дате.
$("#endtime").datetimepicker("setDate", $("#starttime").datetimepicker("getDate"));