Подтвердить что ты не робот

Изменение параметра minDate в JQuery DatePicker не работает

Я объявил экземпляр выбора даты следующим образом:

    $("#datePickerId").datepicker(
    { dateFormat: 'DD, d MM yy',
      minDate: 0,
      showOn: 'button',
      buttonImage: '../../images/calendar.gif',
      buttonImageOnly: true,
      hideIfNoPrevNext: true
    }
   );

Теперь я хочу изменить параметр minDate, чтобы сделать это:

$('#datePickerId').datepicker('option', 'minDate', 3);

Но ничего не происходит. Предполагаю ли я сделать что-нибудь еще? Какие еще возможные причины могут быть?

4b9b3361

Ответ 1

Драко,

Вы можете сделать это следующим образом:

$("#datePickerId").datepicker(
    { dateFormat: 'DD, d MM yy',
      minDate: new Date(2009, 10 - 1, 25), // it will set minDate from 25 October 2009
      showOn: 'button',
      buttonImage: '../../images/calendar.gif',
      buttonImageOnly: true,
      hideIfNoPrevNext: true
    }
   );

не забудьте записать -1 после месяца (например, для june is → 6 -1)

Ответ 2

Как динамически изменять minDate (после init)

В приведенных выше ответах указывается, как установить значение minDate по умолчанию в init, но на самом деле вопрос заключается в том, как динамически изменять minDate, ниже также уточняется. Как установить минимальный minDate по умолчанию.

Все, что было неправильно с исходным вопросом, состояло в том, что заданное значение minDate должно быть строкой (не забудьте кавычки):

$('#datePickerId').datepicker('option', 'minDate', '3');

minDate также принимает объект даты, и обычно используется дата окончания, которую вы пытаетесь вычислить, поэтому может быть полезно что-то вроде этого:

$('#datePickerId').datepicker(
    'option', 'minDate', new Date($(".datePop.start").val())
);

Как установить значение по умолчанию minDate (при инициализации)

Просто отвечая на это для лучшей практики; опция minDate ожидает одно из следующих значений:

  • строка в текущей датеFormat OR
  • количество дней с сегодняшнего дня (например, +7) ИЛИ
  • строка значений и периодов ('y' в течение многих лет, m в месяцах, w недель, 'd' в течение нескольких дней, например. '-1y -1m')

@bogart установка строки в "0" является решением, поскольку оно удовлетворяет варианту 2 выше

$('#datePickerId').datepicker('minDate': '3');

jQuery UI docs для minDate

Ответ 3

Используйте minDate как строку:

$('#datePickerId').datepicker({minDate: '0'});

Сегодня это будет минимальная дата выбора.

Ответ 4

Скажем, у нас есть два поля выбора даты, field1 и field2. Поле field2 зависит от поля1

$('#field2').datepicker();
$('#field1').datepicker({
  onSelect: function(dateText, inst) {
    $('#field2').val("");
    $('#field2').datepicker("option", "minDate", new Date(dateText));
  }
});

Ответ 5

Динамическое изменение minDate

.datepicker("destroy")

Например

<script>
    $(function() {
      $( "#datepicker" ).datepicker("destroy");
      $( "#datepicker" ).datepicker();
    });
  </script>

  <p>Date: <input type="text" id="datepicker" /></p>

Ответ 6

Начало месяца с 0. 0 = январь, 1 = февраль, 2 = март, ..., 11 = декабрь.

Ответ 7

Нет необходимости уничтожать текущий экземпляр, просто обновить.

$('#datepicker')
    .datepicker('option', 'minDate', new Date)
    .datepicker('refresh');