Как ограничить вводимые комбинации чисел в поле "дата рождения"?

Верстаю форму для сайта, надо, чтобы в поле для даты рождения принимались не все комбинации. Т. е. : ввел пользователь 31.02.2022, а такой даты нет. Есть идеи как это сделать? Ссылки на чтиво, код, что нибудь. Примечание: ввод осуществляется только клавой, то есть без традиционного окна с выбором даты


Ответы (1 шт):

Автор решения: Danil Apsadikov

Для этого есть input с типом date плюс проверку даты можно сделать на js

let date = document.getElementById("date");
date.addEventListener("change", function () {
  console.log(isValidDate(date.value));
});

function isValidDate(dateString) {
  var parts = dateString.split("-");
  console.log(parts);
  var day = parseInt(parts[2], 10);
  var month = parseInt(parts[1], 10);
  var year = parseInt(parts[0], 10);

  if (year < 1000 || year > 3000 || month == 0 || month > 12)
    return false;

  var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

  if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0))
    monthLength[1] = 29;

  return day > 0 && day <= monthLength[month - 1];
};
<input type="date" id="date">

→ Ссылка