JQuery UI Datepicker не принимает параметры правильно - PullRequest
0 голосов
/ 12 марта 2019

$(document).ready(function() {
 $("form").submit(function(e) {
 e.preventDefault();
  for (var i=1;i<=($("input[name=number]").val());i++) {
  
    $("<label/>").attr({ class: 'label',id: 'lb'+i}).text(' Payment Date').appendTo("#pays");
                $("<input/>").attr({ type: 'text', id: 'paymentNo-'+(i), class: 'date input', name: 'payD[]', required: 'true' }).appendTo("#pays");
                
  }
  $(".date").each(function() {
    $(this).datepicker({
      onSelect: function(date) {
        $(this).parent().find(".date").datepicker({
          defaultDate: date,
          changeMonth: true,
          changeYear: true
        });
      }
    });
  });
 
 });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script
  src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
  integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU="
  crossorigin="anonymous"></script>

<form>
  <div id="pays">
    <label> How many? </label>
    <input type="text" name="number" id="pnumber">
    <button type="submit">Submit</button>
  </div>
</form>

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

$(this).parent().find(".date").datepicker('option', 'defaultDate', date);

, все будет работать как надо.

Пожалуйста, кто-нибудь, дайте мне знать, почему DatePicker работает таким образом.

1 Ответ

1 голос
/ 12 марта 2019

... дайте мне знать, почему DatePicker работает таким образом.

Итак, ваш вопрос , почему работает иначе, когда передает объект, содержащий все параметры, которые мы хотели бы установить (кодовый блок # 1) или передавая 3 аргумента, разделенных запятой (фрагмент кода # 2) .

Код блока № 1:

$(element).datepicker({
  onSelect: function(date) { // some function here },
  defaultDate: date,
  changeMonth: true,
  changeYear: true
});

Код блока № 2:

$(element).datepicker('option', 'defaultDate', date);

Разница: # 1 - инициализация экземпляра, а # 2 - изменение определенного свойства существующего экземпляра.

Теперь я думаю, что «что такое пример» - это вопрос, который совершенно выходит за рамки ЭТОГО ... Но я нашел интересное видео на YouTube, которое вы можете посмотреть здесь .

В документации API для DatePicker перечислены все параметры, которые вы можете инициализировать, получить и установить. Методы, которые вы можете применить к экземпляру, также перечислены там.

...