jQuery datepicker, добавьте определенное количество дней после выбора даты
Как только пользователь выберет дату в окне выбора даты, я хочу добавить 41 день.
<script language="javascript">
$(document).ready(function() {
$("#startdate").datepicker({ dateFormat: 'd/m/y'});
$('#startdate').datepicker({
onSelect: function(dateStr) {
var nights = parseInt($('#numofdays').val());
var depart = $.datepicker.parseDate('d/m/y', dateStr);
depart.setDate(depart.getDate('d/m/y') + nights);
$('#calc').val(depart);
}
});
});
</script>
Start: <input type="text" id="startdate" class="datepicker"><br />
<input type="hidden" id="numofdays" value="41"><br />
Calc: <input type="text" id="calc">
4 answers
Возможно, вам просто потребуется объединить параметры в одной и той же функции инициализации:
$("#startdate").datepicker({
dateFormat: 'd/m/y',
onSelect: function(dateStr, inst) {
var nights = parseInt($('#numofdays').val());
var depart = $.datepicker.parseDate('d/m/y', dateStr);
depart.setDate(depart.getDate('d/m/y') + nights);
$('#calc').val(depart.toLocaleDateString());
}
});
Смотрите это в действии: http://jsfiddle.net/william/L9Szd/.
$('#startdate').datepicker('getDate')
вернет объект даты
d = $('#startdate').datepicker('getDate');
d.setDate(d.getDate()+nights); // add int nights to int date
alert(d);
Добавление d.getDate()
и nights
приведет к скачку времени вперед. Так что, если 16.09.2011 + 41 день, вы получите 25.10.2011
Может показаться странным, если пользователь выберет дату, а затем в поле будет указана дата, которая наступит через 41 день, а не та, которую я выбрал. почему бы не сделать это дополнение на стороне сервера с помощью PHP?
$date_string = date('Y-m-d', strtotime('+41 days', strtotime($_POST['date_input'])));
Это единственный простой способ, который я нашел для этого:
Чтобы установить дату на 41 день раньше выбранной даты:
1. Извлеките выбранную дату из поля выбора даты
var newdate = new Date($("#datepicker_date_field_1").datepicker("getDate"));
2. Увеличьте дату, полученную сверху
newdate.setDate(newdate.getDate() + 41);
3. Назначьте вновь сформированную дату другому (или тому же) полю выбора даты
$("#datepicker_date_field_2").datepicker("setDate",newdate);