唉..我很难过......
我有一个运行jQuery日期选择器UI的预订模块。我有一个到达日期字段和一个出发日期字段,每个字段都有一个日期选择器对象。
我希望默认到达日期为今天我通过执行以下操作实现此目的:
<script type="text/javascript">
$(document).ready(function(){
$(".arrive").datepicker();
$(".depart").datepicker();
$(".arrive").datepicker('setDate', new Date());
});
</script>
这完全有效但是当用户选择到达日期时,我希望将出发默认日期设置为用户选择的到达日期之后的一天。我尝试使用onSelect事件作为日期选择器对象,并尝试从到达字段中提取值并添加一天但无济于事。我以前见过这个功能,我认为这不是很困难,我只是在这个问题上难以理解。有任何想法吗?我的文本字段的html如下:
<ul>
<li>
<label>Arriving</label>
<span class="dateinput">
<input class="arrive" type="text" value="" name="startDate" />
<img id="arrive" src="images/calendar_icon.png" />
<div class="clear"></div>
</span>
</li>
<li>
<label>Departing</label>
<span class="dateinput">
<input class="depart" name="endDate" value="" type="text" />
<img src="images/calendar_icon.png" />
<div class="clear"></div>
</span>
</li>
</ul>
非常感谢能帮助我解决这个问题的人。
答案 0 :(得分:7)
使用documentation作为灵感:
<script type="text/javascript">
$(document).ready(function(){
$(".arrive").datepicker({
onSelect: function( selectedDate ) {
// Parse the selected date
var instance = $( this ).data( "datepicker" ),
date = $.datepicker.parseDate(
instance.settings.dateFormat ||
$.datepicker._defaults.dateFormat,
selectedDate, instance.settings );
// Add one day
date.setDate(date.getDate()+1);
// Set the new date
$(".depart").datepicker('setDate', date);
}
});
$(".depart").datepicker();
$(".arrive").datepicker('setDate', new Date());
});
</script>
答案 1 :(得分:0)
答案 2 :(得分:0)
经过一番反复试验后,这对于我设置最小起降日期和最大起降日期(如果在到达之前选择了起降时间)非常有用
$("#arrival").datepicker({
//set other options here
minDate: 0, //sets min date today
onClose: function() {
let arriveDate = $(this).datepicker("getDate");
if(arriveDate){
arriveDate.setDate(arriveDate.getDate() + 1);
$("#depart").datepicker("option", "minDate", arriveDate); //sets min departure date to arrival date + 1
}else $("#depart").datepicker("option", "minDate", 1); //reset to default min departure date (in case arrival date was earlier set and later removed)
}
})
$("#depart").datepicker({
//set other options here
minDate: 1, //sets min date today + 1
onClose: function() {
let departDate = $(this).datepicker("getDate");
if(departDate){
departDate.setDate(departDate.getDate() - 1);
$("#arrival").datepicker("option", "maxDate", departDate); //sets max arrival date to departure date - 1
}else $("#arrival").datepicker("option", "maxDate", ''); //reset to default max arrival date (in case departure date was earlier set and later removed)
}
})