JQuery UI Datepicker неправильно принимает параметры

$(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 работает таким образом.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

... let me know why datepicker works this way.

Итак, ваш вопрос: Зачем работает ли он по-другому при передаче объекта, содержащего все параметры, которые мы хотели бы установить (фрагмент кода №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 — модификация определенного свойства существующего экземпляра.

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

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

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

Bharath 13.03.2019 05:08

Извините, если я неправильно понял ваш вопрос в первый раз... Я отредактировал.

Louys Patrice Bessette 13.03.2019 16:21

Другие вопросы по теме