Как написать условие для input, чтобы он проверял ввод корректной даты?

Для того чтобы проверять ввод корректной даты в поле input, можно использовать регулярные выражения или проверку с помощью JavaScript методов.

1. Регулярное выражение:
Возможно использование регулярного выражения для проверки формата даты, однако этот метод не проверяет правильность ввода даты (например, его формат, месяц, количество дней).

Пример:

   const dateRegex = /^d{2}([./-])d{2}1d{4}$/;
   const dateInput = document.querySelector('#dateInput');

   dateInput.addEventListener('input', () => {
     if (!dateRegex.test(dateInput.value)) {
       // Некорректная дата
       dateInput.setCustomValidity('Введите корректную дату');
     } else {
       // Корректная дата
       dateInput.setCustomValidity('');
     }
   });

В данном примере мы используем регулярное выражение ^d{2}([./-])d{2}1d{4}$, которое проверяет, что ввод соответствует формату даты в формате dd.mm.yyyy, dd-mm-yyyy или dd/mm/yyyy. Если регулярное выражение возвращает false, мы устанавливаем пользовательскую ошибку с помощью метода setCustomValidity(). Если регулярное выражение возвращает true, считаем ввод корректным и сбрасываем пользовательскую ошибку.

2. Методы JavaScript:
Более сложная, но более гибкая проверка может быть выполнена с помощью методов JavaScript, таких как parse() и isNaN(). Этот способ позволяет проверять как формат даты, так и правильность ввода даты.

Пример:

   const dateInput = document.querySelector('#dateInput');

   dateInput.addEventListener('input', () => {
     const enteredDate = new Date(dateInput.value);
     if (isNaN(enteredDate)) {
       // Некорректная дата
       dateInput.setCustomValidity('Введите корректную дату');
     } else {
       // Корректная дата
       dateInput.setCustomValidity('');
     }
   });

В данном примере мы создаем новый объект Date на основе введенной даты. Если введенная дата является некорректной, будет возвращено значение NaN, и мы устанавливаем пользовательскую ошибку. В противном случае, если дата корректна, сбрасываем пользовательскую ошибку. Этот способ позволяет более точно проверять правильность ввода даты, так как JavaScript будет автоматически учитывать формат даты и количество дней в месяце.

Обратите внимание, что в обоих примерах важно привязать эти проверки к событию input, чтобы проверка выполнялась при каждом изменении значения в поле input. Также следует учитывать, что пользователи могут вводить даты в различных форматах, поэтому рекомендуется предоставить подсказки и инструкции о верном формате даты для пользователя.