Добавить день до вылета javascript - PullRequest
0 голосов
/ 31 мая 2018

Пожалуйста, обратите внимание на следующий код JavaScript:

// Default calendar namespaces
    var dateFormat = "<span class='day'>d</span> <span class='month'>M</span> <span class='year'>yy</span>",
        dateArrival = '#dateArrival input',
        dateDeparture = '#dateDeparture input',
        dateArrivalVal = '#dateArrival .date-value',
        dateDepartureVal = '#dateDeparture .date-value';

    // Show arrival calendar
    $(dateArrival).datepicker({
        minDate: 'D',
        dateFormat: dateFormat,
        // get value on selected date for departure
        onSelect: function (txt, inst) {
            $(dateDepartureVal).html(txt);
            $(dateArrivalVal).html($(dateArrival).val());
        },
        onClose: function (selectedDate) {
            $(dateDeparture).datepicker("option", "minDate", selectedDate);
        }
    });

    // Show departure calendar
    $(dateDeparture).datepicker({
        minDate: 'D+1',
        dateFormat: dateFormat,
        // get value on selected date for return
        onSelect: function (txt, inst) {
            $(dateDepartureVal).html(txt);
            $(dateDepartureVal).html($(dateDeparture).val());
        }
    });

    // set current date
    $('.datepicker').datepicker('setDate', 'today');
    // get current value from departure 
    $(dateArrivalVal).html($(dateArrival).val());
    // get current value from return
    $(dateDepartureVal).html($(dateDeparture).val());

Как видите, это виджет бронирования, который отображает текущий день при регистрации заезда и следующий день при выписке.Однако, когда клиент выбирает другой день для регистрации, для проверки устанавливается ТОТ ЖЕ день.Что я хочу сделать, так это, если dateArrival выбран, скажем, 7 июня, dateDeparture автоматически отображает 8 июня (то есть dateArrival + 1 день) вместо отображения той же даты (7 июня).Как можно это сделать?

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

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете:

  1. зарегистрировать событие изменения в день прибытия, которое устанавливает отправку на D + 1 чек jQuery .change ()
  2. зарегистрироватьСобытие изменения в дату отъезда, которое удаляет предыдущий обработчик, jQuery .off

Но хитрость в том, что никакой метод из DatePicker не помогает вам установить +1 день на произвольную датупоэтому вы должны напрямую манипулировать отформатированной строкой .Я добавил 3 строки, чтобы получить строку +1 день, и четвертую, которая использует метод datepicker для установки dateDeparture.Он проверен, поэтому проверьте, выполняет ли он эту работу за вас

// Show arrival calendar
$(dateArrival).datepicker({
    minDate: 'D',
    dateFormat: dateFormat,
    // get value on selected date for departure
    onSelect: function (txt, inst) {
        $(dateDepartureVal).html(txt);
        $(dateArrivalVal).html($(dateArrival).val());
        // ADDED THESE FIVE LINES
        var d = new Date((+inst.currentMonth+1) + '/' + inst.currentDay + '/' + inst.currentYear)
        var dpo = new Date(d.getTime() + 24*60*60*1000)
        var str = "<span class=day>"+dpo.getDate()+"</span> <span class=month>"+(dpo.toDateString().split(' ')[1])+"</span> <span class=year>"+dpo.getFullYear()+"</span>"
        $(dateDeparture).datepicker('setDate', str);
        $(dateDepartureVal).html(str);
    }
    // REMOVED USELESS ONCLOSE, SINCE UI IS CLOSED ON SELECT
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...