2014-12-28 57 views
1

您好我有2个日期选择器,第二个日期选择器不能允许用户从第一个日期选择器的日期中选择大于30天的日期。jQuery datepicker不允许选择日期,月份有31天,并选择月份的第一天

如果选择一个中间月份的日期,或者如果我选择一个月份的日期多于或少于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); 
     } 
    } 
}); 

回答

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); 

现在,当minDatemaxDate正在为其他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); 
    } 
} 

+1

感谢@abhitalks我花了很多年看着这个,从来没有注意到我做到了。感谢您的帮助,祝您有个美好的新年 –

相关问题