JQuery UI DatePicker: рассчитать minDate х лет с сегодняшнего дня - PullRequest
1 голос
/ 20 марта 2019

Добрый день

Я пытаюсь установить minDate для указателя даты jQuery UI, который должен быть действителен для всех пользователей в возрасте от 12 до 17 лет. Только с maxDate это работает нормально.И я знаю, что должен как-то рассчитать minDate.Я искал все другие темы StackOverflow, но не смог найти что-то подобное.Другие решения, которые я нашел, установили фиксированную дату, но она мне нужна 12-17 лет по сравнению с сегодняшним днем.

Что я пробовал до сих пор:

minDate: new Date((currentYear - 12), currentMonth, currentDay))

и

minDate: "-12y"

Мой текущий образец:

$(".datepicker").datepicker({
    numberOfMonths: 1,
    firstDay: 1,
    defaultDate: 0,
    changeMonth: true,
    changeYear: true,
    yearRange: '1910:c',
    dateFormat: 'dd.mm.yy',
    beforeShow: function () {
        var currentYear = (new Date).getFullYear();
        var currentMonth = (new Date).getMonth() + 1;
        var currentDay = (new Date).getDate();
        
        $(this).datepicker({ 
            minDate: new Date((currentYear - 12), currentMonth, currentDay),
            maxDate: "-17y -11m -30d"
        });
    }
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet"/>

<input type="text" class="datepicker" id="myDate">

1 Ответ

2 голосов
/ 20 марта 2019

minDate: "-12y" работает абсолютно нормально, однако, если вы хотите разрешить только возраст от 12 до 17 лет, вам нужно использовать и minDate, и maxDate, чтобы установить допустимый диапазон.

В связи с этим вашиспользование onBeforeShow() является избыточным, наряду с numberOfMonths, defaultDate и yearRange.Попробуйте это:

$(".datepicker").datepicker({
  firstDay: 1,
  changeMonth: true,
  changeYear: true,
  dateFormat: 'dd.mm.yy',
  minDate: '-17y', // min 17 years ago
  maxDate: '-12y', // max 12 years ago
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" rel="stylesheet" />

<input type="text" class="datepicker" id="myDate">
...