JQuery UI DatePicker - Уходя Дату и возвращение Даты

голоса
1

В основном то, что я пытаюсь сделать, это создать два поля Datepicker. Во-первых, вылетающих дата и второй является возвращение даты. Так, например, если кто-то ищет праздник, который был 5 ночью пребывания, когда они загружены на странице дата будет выглядеть следующим образом:

01/12/2010 | Календарь Иконка 07/12/2010 | Значок календаря

Для вылетающей даты вы сможете выбрать любую дату (дату сегодняшней или любую будущую дату). И когда вы нажали возвращающуюся дату, вы бы только иметь возможность выбрать даты, которые пяти ночей мимо уходящей даты.

Я почти получил эту работу в порядке от чтения различных других статей переполнения стека. Вот код, я использую:

$().ready(function() {
    $('.dDate, .rDate').datepicker({
        showOn: 'both',
        buttonImage: <?=$http?>layout_images/calendar.gif,
        buttonImageOnly: true,
        beforeShow: customRange,
        buttonText: 'Open Calendar',
        firstDay: 1,
        dateFormat: 'D d M yy',
        onSelect: function(date) {
            date = $(this).datepicker('getDate');
            $('#returningdate').val($.datepicker.formatDate('D d M yy', date));
        }
    });
});

function customRange(a) {
    var b = new Date();
    var c = new Date(b.getFullYear(), b.getMonth(), b.getDate());
    if (a.id == 'returningdate') {
        if ($('.dDate').datepicker('getDate') != null) {
            c = $('.dDate').datepicker('getDate');
        }
    }
    return {
        minDate: c
    }
}

Этот код выполняет следующие действия:

Если я выбираю 01/12/2010 в уходящее поле даты. Он автоматически заполняет возвращающуюся дату с 01/12/2010.

В уходящем поле даты можно выбрать любую дату (дату сегодняшних и больше), и теперь в дате возвращения я не могу выбрать дни перед 01/12/2010.

Но то, что я хочу, чтобы это произошел, когда я выбираю 01/12/2010 в уходящее время, она добавит 5 ночей автоматически и сделать возвращающуюся дату 07.12.2010 и не допускать какие-либо дней до этого должно быть выбрано.

Есть ли простой способ изменить код выше, чтобы работать таким образом?

Большое спасибо,

Квентин Хобсон

Задан 30/09/2010 в 05:19
пользователем
На других языках...                            


1 ответов

голоса
0

Это решение, которое я нашел:

    $(document).ready(function() {
        $('.dDate, .rDate').datepicker({
            showOn: 'both',
            buttonImage: '<?=$http?>layout_images/calendar.gif',
            buttonImageOnly: true,
            beforeShow: customRange,
            buttonText: 'Open Calendar',
            firstDay: 1,
            dateFormat: 'D d M yy',
            onSelect: function(date) {
                date = $(this).datepicker('getDate');
                if($(this).attr("id") != 'returningdate'){
                    var returnDate = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 6);
                    $('#returningdate').val($.datepicker.formatDate('D d M yy', returnDate));
                }
            }
        });
    });

    function customRange(a) {
        var returnDateMin;
        var b = new Date();
        var c = new Date(b.getFullYear(), b.getMonth(), b.getDate());
        if (a.id == 'returningdate') 
        {
            if ($('.dDate').datepicker('getDate') != null) {
                c = $('.dDate').datepicker('getDate');
            }
            returnDateMin = new Date(c.getFullYear(), c.getMonth(), c.getDate() + 6);
        }
        else
        {
            returnDateMin = c;
        }
        return {
            minDate: returnDateMin
        }
    }
Ответил 30/09/2010 в 11:47
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more