jQuery datepicker将不允许选择月份为31天的日期并选择月份的第一天

时间:2014-12-28 10:22:10

标签: jquery datepicker

您好我有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);
        }
    }
});

1 个答案:

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

现在,当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);
    }
}