Установите mintime для Datetimepicker на основе другой даты Datetimepicker - PullRequest
0 голосов
/ 19 декабря 2018

Я использую Datetimepicker с форматом только даты в обоих классах (Это нормально работает, если я выбираю Date из поля ValidFrom ).Мой вариант использования состоял в том, что при выборе ValidFrom значение ValidTo должно автоматически увеличиваться на 1 месяц (это происходит).Теперь проблема, с которой я сталкиваюсь, заключается в том, что однажды дата из ValidFrom выбирается в ValidTo . Поле даты должно быть не меньше даты в ValidFrom , а такжедата в ValidTo может быть только уменьшена и не должна увеличиваться на 30 дней.

Ниже приведен мой код для Datetimepicker:

<script>
    $(document).ready(function () {
        $('#ValidFrom').datetimepicker({
            datepicker: true,
            timepicker: false,
            format: 'm/d/Y',
            step: 30,
            minDate: new Date(),
            onChangeDateTime: function (dp, $input) {
                var date = new Date($input.val());
                date.setMonth(date.getMonth() + 1);
                date = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
                $('#ValidTo').val(date);
            },

        });
        $('#ValidTo').datetimepicker({
            datepicker: true,
            timepicker: false,
            format: 'm/d/Y',
            step: 30,
            minDate: new Date(),

        });

    });

</script>

PS Я уже пробовалпути, упомянутые в другом вопросе, но они не были плодотворными.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вот удобный инструмент , который может помочь создать необходимые ограничения.

0 голосов
/ 19 декабря 2018

Попробуйте обновить minDate и maxDate, как показано ниже.

$('#ValidTo').datetimepicker('option', 'minDate', minDate);
$('#ValidTo').datetimepicker('option', 'maxDate', maxDate);

Или, если это не работает, попробуйте, как показано ниже.

$('#ValidTo').data("DateTimePicker").setMinDate(minDate);
$('#ValidTo').data("DateTimePicker").setMaxDate(maxDate);

Ваш полный код долженбыть как ниже.

$(document).ready(function() {
  $('#ValidFrom').datetimepicker({
    datepicker: true,
    timepicker: false,
    format: 'm/d/Y',
    step: 30,
    minDate: new Date(),
    onChangeDateTime: function(dp, $input) {
      var date = new Date($input.val());
      $('#ValidTo').datetimepicker('option', 'minDate', date);
      date.setMonth(date.getMonth() + 1);
      $('#ValidTo').datetimepicker('option', 'maxDate', date);
      date = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
      $('#ValidTo').val(date);
    },
  });
  
  $('#ValidTo').datetimepicker({
    datepicker: true,
    timepicker: false,
    format: 'm/d/Y',
    step: 30,
    minDate: new Date(),
  });

});
...