Инициализация начальной загрузки datepicker снова

Я пытаюсь настроить 2 datepickers для простой системы проверки / проверки, используя ускорение datepicker: http://www.eyecon.ro/bootstrap-datepicker/

Вот мой код:

    var nowTemp = new Date();
    var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);

    var checkin = $('#searchtype_checkin').datepicker({
        onRender: function (date) {
            return date.valueOf() < now.valueOf() ? 'disabled' : '';
        },
        format: 'dd/mm/yyyy'
    }).on('changeDate', function (ev) {
        if (ev.date.valueOf() > checkout.date.valueOf()) {
            var newDate = new Date(ev.date)
            newDate.setDate(newDate.getDate() + 2);
            checkout.setValue(newDate);
        }
        checkin.hide();

        $('#searchtype_checkout')[0].focus();
    }).data('datepicker');

    var checkout = $('#searchtype_checkout').datepicker({
        onRender: function (date) {
            return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
        },
        format: 'dd/mm/yyyy'
    }).on('changeDate', function (ev) {
        checkout.hide();
    }).data('datepicker');

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

После выбора одной даты при проверке я хочу отключить все даты до этой даты в средстве выбора даты оформления, чтобы избежать проверки ПЕРЕД проверкой, а также сосредоточиться на проверке непосредственно на событии «changeDate» проверки.

Все работает хорошо, НО если после того, как я изменил дату регистрации на дату, ПЕРЕД датой, выбранной в первый раз, функция проверки «onRender» больше не вызывается, и все даты, ранее отключенные в средстве выбора даты проверки, по-прежнему отключены.

Как я могу снова вызвать событие onRender в средстве выбора даты оформления заказа? Я хотел бы вызывать эту функцию после каждого «changeDate» проверки.


person vgross    schedule 06.04.2015    source источник


Ответы (1)


Вы можете использовать опцию onSelect для datepicker вместо того, что вы используете сейчас.

 var checkin = $('#searchtype_checkin').datepicker({
        onRender: function (date) {
            return date.valueOf() < now.valueOf() ? 'disabled' : '';
        },
        format: 'dd/mm/yyyy',
        onSelect: function(selected) {
                var date=new Date(selected)
                day=date.getDate()+2;
                newDate=date.getMonth()+1 + "/" + day + "/" + date.getFullYear();
                $("#searchtype_checkout").datepicker("option","minDate", newDate);
        }
});

РЕДАКТИРОВАТЬ - вы также можете добавить onSelect к дате выезда, чтобы, когда пользователь сначала выбирает дату выезда, все более поздние даты отключены в дате выезда.

var checkout = $('#searchtype_checkout').datepicker({
        onRender: function (date) {
                     return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
                  },
        format: 'dd/mm/yyyy'
        onSelect: function(selected,inst) {
       $("#searchtype_checkin").datepicker("option","maxDate", selected)
     }
});  

Рабочая скрипка

person Guruprasad J Rao    schedule 06.04.2015
comment
извините, возможно, я не очень хорошо объяснил, что я пытаюсь сделать. Основная проблема заключается не в том, чтобы установить дату выезда, а в том, чтобы динамически отключить дату выезда до даты выезда. - person vgross; 06.04.2015
comment
Итак, вы хотите включить дату выезда только после даты выезда в выбранном праве? - person Guruprasad J Rao; 06.04.2015
comment
Все работает хорошо, НО если после того, как я изменил дату регистрации на дату, ПРЕЖДЕ, чем дату, выбранную в первый раз, функция проверки onRender больше не вызывается, и все даты, ранее отключенные в средстве выбора даты проверки, по-прежнему отключены. Это то, что вы упомянули в своем вопросе, и, согласно моему ответу, это решает вашу проблему. Укажите конкретику или отредактируйте вопрос! - person Guruprasad J Rao; 06.04.2015
comment
извините меня, это тоже ясно по вопросу. Если, например, я выбираю 05/01/2015 при проверке, доступные даты проверки начинаются с 06/01/2015, что я хочу, НО, если теперь я изменяю дату проверки на 01/01/2015, дату доступности проверки по-прежнему начинается с 01.06.2015, что неверно, потому что на этом этапе я могу выбрать для примера 01.03.2015. Понимаете ? - person vgross; 06.04.2015
comment
вот почему я попросил динамически использовать метод onRender при оформлении заказа каждый раз, когда я меняю его. - person vgross; 06.04.2015
comment
Хорошо .. не могли бы вы предоставить скрипку с простым html ?? Я попробую это отредактировать !! - person Guruprasad J Rao; 06.04.2015
comment
Я пытался найти эту библиотеку, чтобы использовать ее на Fiddle, но не нашел ее ни в одном CDN. Я не первый раз использую Fiddle, может, я поступаю неправильно? Извините за мое незнание. Я думаю, что моим решением будет использование диапазона дат из этой библиотеки: bootstrap-datepicker.readthedocs .org / en / latest вместо начальной загрузки datepicker от eyecon - person vgross; 07.04.2015
comment
Думаю, большой разницы между ними не будет. Я сослался на jquery-ui-datepicker, а вы имеете в виду отредактированную версию того же самого с точки зрения стилей с меньшим количеством опций для игры по сравнению с jquery-ui-datepicker. Так что не имеет значения, отдадите ли вы его в jquery-ui-datepicker. Я попробую создать то же самое с вашим кодом и дам вам знать. - person Guruprasad J Rao; 07.04.2015
comment
Я бы посоветовал вам использовать диапазон дат ссылки, о которой вы упомянули. Сообщите мне, если у вас возникнут проблемы с реализацией того же! - person Guruprasad J Rao; 07.04.2015
comment
В любое время .. Удачного кодирования .. :) - person Guruprasad J Rao; 07.04.2015