您好我有2个日期选择器,第二个日期选择器不允许用户从第一个日期选择器的日期开始选择超过30天的日期。
如果选择月中旬,或者如果我选择一个月中超过或少于31天的一天,则此工作正常。
但是,如果这个月有31天,我选择了第一个,即01/01/2014,01/03/2014(dd / MM / yyyy格式),那么我无法选择任何一天。
任何比我更有经验的人都可以找到我出错的地方。
$("#ArrivalDate").datepicker({
dateFormat: "dd/mm/yy",
minDate: 0,
onSelect: function () {
var dteMaxBookings = $('#ArrivalDate').datepicker('getDate');
dteMaxBookings.setDate(dteMaxBookings.getDate() + 30);
$('#DepartDate').datepicker('setDate', dteMaxBookings);
$('#DepartDate').datepicker('option', 'maxDate', dteMaxBookings);
var dteMinBooking = $('#ArrivalDate').datepicker('getDate');
dteMinBooking.setDate(dteMaxBookings.getDate() + 2);
$('#DepartDate').datepicker('option', 'minDate', dteMinBooking);
}
});
$('#DepartDate').datepicker({
dateFormat: "dd/mm/yy",
onClose: function () {
calculate();
var dteArrivalDate = $('#ArrivalDate').datepicker('getDate');
var dteDepartDate = $('#DepartDate').datepicker('getDate');
if (dteDepartDate <= dteArrivalDate) {
var maxDate = $('#DepartDate').datepicker('option', 'maxDate');
$('#DepartDate').datepicker('setDate', maxDate);
}
}
});
答案 0 :(得分:1)
问题是因为您正在重新使用dteMaxBookings
来计算其他日期选择器的minDate
。
在$("#ArrivalDate").datepicker.... onSelect
更改此 :
var dteMinBooking = $('#ArrivalDate').datepicker('getDate');
dteMinBooking.setDate(dteMaxBookings.getDate() + 2); // dteMaxBookings ?
$('#DepartDate').datepicker('option', 'minDate', dteMinBooking);
到此 :
var dteMinBooking = $('#ArrivalDate').datepicker('getDate');
dteMinBooking.setDate(dteMinBooking.getDate() + 2); // change to dteMinBooking
$('#DepartDate').datepicker('option', 'minDate', dteMinBooking);
现在,当minDate
和maxDate
正在为另一个dateipcker工作时,以下onClose
块是多余的。
您可以 从$('#DepartDate').datepicker....
删除此 :
onClose: function () {
var dteArrivalDate = $('#ArrivalDate').datepicker('getDate');
var dteDepartDate = $('#DepartDate').datepicker('getDate');
if (dteDepartDate <= dteArrivalDate) {
var maxDate = $('#DepartDate').datepicker('option', 'maxDate');
$('#DepartDate').datepicker('setDate', maxDate);
}
}