Ошибка отключения лет до 18 лет в загрузчике DatePicker - PullRequest
0 голосов
/ 01 февраля 2019

Работа с формой, посредством которой я использую загрузчик даты начальной загрузки для отображения даты пользователю.У меня есть поле даты рождения, с помощью которого я пытаюсь отключить годы любого пользователя младше 18 лет от текущей даты.Например, поскольку мы находимся в 2019 году, средство выбора даты должно отображать только годы ниже 2001 года, например, 2001, 2000, 1999, 1998, 1997 и т. Д.

Это прекрасно работает (годы), но у меня есть проблема с отключением месяцев и конкретныхдни, например, так как мы находимся 01.02.2009, средство выбора даты должно отключить любую дату после 1 февраля 2001 года

Дата рождения

//dob
<div class="form-line registar love">
      <input type="text" placeholder="Date of Birth *" class="form-input" name="dob" id="dob" value="#" title="You should be over 18 years old" required>

      <label class="error error-tip" for="dob" id="dobErr" style="display: none; color:red; font-size: 11px;">You should be over 18 years old</label>
 </div>
//end dob

Javascript Logic

var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 );
maxBirthdayDate.setMonth(11,31);
$( function() {
  $( "#dob" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd',
    maxDate: maxBirthdayDate,
    yearRange: '1900:'+maxBirthdayDate.getFullYear(),
  });
});

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

с датой JS и датчиком начальной загрузки:

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!

var yyyy = today.getFullYear() -18;
if (dd < 10) {
    dd = '0' + dd;
} 
if (mm < 10) {
    mm = '0' + mm;
} 
var yearsago = mm + '/' + dd + '/' + yyyy;

или с Moment.js

var yearsago = moment(new Date()).subtract(18, 'years').format("DD-MM-YYYY");

$('#dob').datepicker('setStartDate', yearsago);

или

$('#dob').datepicker({ 
   startDate: yearsago
});
0 голосов
/ 01 февраля 2019

Вы можете проверить, используя minDate и maxDate очень простым способом, чтобы пользователи не выбирали DOB до 18 лет.

$("#dob").datepicker( { minDate: '-30Y',dateFormat: 'dd/mm/yy', maxDate: '-18Y' });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>


<p>Date: <input type="text" id="dob" /></p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...