модификация функции jquery datepicker - PullRequest
1 голос
/ 03 ноября 2011

Как я могу изменить эту функцию, чтобы изменить значение # datepicker2 на дату # datepicker1 плюс один день, если дата # datepicker1 находится после даты # datepicker2?

Так что, если даты по умолчанию для #datepicker1 и #datepicker два - 11/03/2011 и 11/04/2011 соответственно, и я изменяю # datepicker1 на 25.11.2011, # datepicker2 должен быть заполнен 26.11.2011.

Но если я изменю # datepicker1 на, скажем, 28.10.2011, то # datepicker2 останется неизменным.

Вот jsfiddle -> http://jsfiddle.net/hJrzp/1/

$(function() {
    var dates = $( "#datepicker1, #datepicker2" ).datepicker({
     //   minDate:  new Date(),
    //    maxDate: '+2y',
        defaultDate: "+1d",
        showOtherMonths: true,
        selectOtherMonths: true,
    //    changeMonth: true,
        numberOfMonths: 1,
        onSelect: function( selectedDate ) {
            var option = this.id == "datepicker1" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
});

1 Ответ

1 голос
/ 04 ноября 2011

Вы должны иметь возможность добавить один день, когда указатель даты является первым (т.е. #datepicker1). Это включает в себя некоторую арифметику даты. Итак, функция onSelect будет выглядеть так:

    onSelect: function( selectedDate ) {
        var option = this.id == "datepicker1" ? "minDate" : "maxDate",
            instance = $( this ).data( "datepicker" ),
            date = $.datepicker.parseDate(
                instance.settings.dateFormat ||
                $.datepicker._defaults.dateFormat,
                selectedDate, instance.settings );
        if (this.id == 'datepicker1') {
            var oneDay = 1000*60*60*24;
            var plusOneDay = new Date(date.getTime() + oneDay);
            dates.not( this ).datepicker( "option", option, plusOneDay );
        } else {
            dates.not( this ).datepicker( "option", option, date );
        }
    }

Смотрите это в действии: http://jsfiddle.net/william/hJrzp/2/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...