модификация функции jquery datepicker

#jquery #datepicker

#jquery #выбор даты

Вопрос:

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

Итак, если даты по умолчанию для #datepicker1 и #datepicker two равны 03.11.2011 и 04.11.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. Можем ли мы упростить этот вопрос, сказав, что требование заключается в том, что при datepicker1 изменении datepicker2 устанавливается datepicker1 дата плюс один день? Это точное утверждение или я что-то упускаю?

Ответ №1:

Вы должны иметь возможность добавить один день, когда выбор даты является первым (т.Е. #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 /.