Основы элемента ";input type="date">"в HTML, который упрощает ввод дат пользователем

HTML элемент <input type="date"> позволяет легко вводить даты на веб-сайтах. Этот удобный инструмент экономит время пользователей и упрощает валидацию данных на сервере. В статье мы подробно разберем, как использовать <input type="date"> и сделать ввод дат еще проще для посетителей сайта.

Основы элемента <input type="date">

<input type="date"> - это HTML элемент формы, который позволяет пользователю выбрать дату из всплывающего календаря или ввести ее вручную в текстовое поле. Браузеры отображают <input type="date"> по-разному, но обычно это поле с кнопкой для вызова календаря.

Поддержка <input type="date"> пока не идеальна. В старых браузерах он просто деградирует в обычное текстовое поле. Но в современных браузерах этот элемент уже хорошо работает.

Значение поля <input type="date"> всегда имеет формат yyyy-mm-dd вне зависимости от локали браузера.

Это упрощает последующую обработку даты на сервере. К примеру, мы можем установить дату по умолчанию:

А в JavaScript прочитать введенное значение:

let date = document.querySelector('input[type="date"]').value;

В дополнение к общим атрибутам, <input type="date"> поддерживает специальные:

  • min - минимальная дата
  • max - максимальная дата
  • step - шаг изменения даты

С их помощью можно гибко настраивать и валидировать поля с датами, о чем речь пойдет далее.

Установка границ с помощью min и max

Одна из полезных возможностей <input type="date"> - это ограничение диапазона дат с помощью атрибутов min и max. Например, чтобы разрешить выбирать только даты в апреле 2023 года, можно написать:

Если пользователь введет дату раньше 1 апреля или позже 30 апреля, то поле будет помечено как невалидное в поддерживаемых браузерах. Это позволяет избежать ошибок на стороне клиента.

Однако важно помнить, что проверку данных нужно дублировать и на сервере. Злоумышленник может легко обойти ограничения HTML и отправить любую дату напрямую на бекенд.

Использование шага и значения по умолчанию

Атрибут step определяет interval, с которым можно выбирать даты в <input type="date">. Например, step="7" означает, что доступны даты с интервалом в 7 дней.

А value задает дату по умолчанию при первой загрузке страницы:

Здесь по умолчанию будет выбрана дата 21 марта 2023 года. А выбрать можно будет только даты с интервалом в неделю относительно нее.

Обязательные поля и паттерны

Чтобы сделать поле <input type="date"> обязательным для заполнения, используется атрибут required. При попытке отправить форму с пустым полем появится сообщение об ошибке.

Для валидации введенного значения в старых браузерах можно задать шаблон через атрибут pattern. Например, паттерн "[0-9]{4}-[0-9]{2}-[0-9]{2}" проверит, что дата соответствует формату ГГГГ-ММ-ДД.

Советы по кросс-браузерной поддержке

Чтобы <input type="date"> корректно работал во всех браузерах, рекомендуется:

  • Использовать pattern для проверки формата даты
  • Разбить date на отдельные select для дня, месяца и года
  • Применять jQuery datepicker и другие JavaScript решения

Такой подход обеспечит согласованную работу элемента ввода даты на всех устройствах и браузерах.

Примеры оформления <input type="date">

Давайте рассмотрим несколько практических примеров использования <input type="date"> на сайте.

Выбор даты доставки заказа

На странице оформления заказа в интернет-магазине можно добавить поле для указания желаемой даты доставки:

Чтобы ограничить период ожидания, используем min и max. А с помощью required делаем заполнение обязательным.

Ввод даты рождения

При регистрации на сайте часто требуется указать дату рождения. <input type="date"> позволяет сделать это удобно:

Тут также имеет смысл ограничить диапазон допустимых дат min и max, чтобы избежать ошибок.

Подбор свободных дат для бронирования

На сайте отеля или другой бронируемой услуги полезно показывать только свободные для брони даты. Это можно реализовать с помощью <input type="date"> и скрипта на бекенде.

Стилизация <input type="date"> с CSS

Внешний вид элемента <input type="date"> можно гибко настроить при помощи CSS, например:

input[type="date"] { padding: 12px 16px; border: 1px solid #ccc; border-radius: 4px; }

Поддерживаются различные свойства, как для обычных текстовых полей: размер, цвета, отступы, рамки и т.д. Это позволяет стилизовать date под дизайн сайта.

Валидация введенных данных

Помимо атрибутов min, max и required, для проверки корректности введенной даты можно использовать следующие средства:

Паттерны

Атрибут pattern задает регулярное выражение для валидации значения. Например:

Этот паттерн проверит, что дата соответствует формату ГГГГ-ММ-ДД.

JavaScript

Для более гибкой валидации можно написать скрипт на JavaScript. Например, проверить, что год в диапазоне 1900-2099, месяц 1-12, день 1-31.

Серверная валидация

На backend также следует проверять введенные данные. Это защитит от отправки некорректных значений обходным путем.

Доступность и юзабилити

Чтобы сделать работу с <input type="date"> максимально удобной для пользователя, рекомендуется:

  • Добавить placeholder с подсказкой формата даты
  • Указать атрибут title с дополнительным описанием
  • Стилизовать фокус и ховер состояние

Это повысит юзабилити элемента ввода даты на сайте.

Альтернативы <input type="date">

Если нужна кросс-браузерная поддержка, в качестве альтернативы <input type="date"> можно использовать:

  • Отдельные select для дня, месяца и года
  • Библиотеки вроде jQuery UI Datepicker
  • Маскирование текстового поля с помощью JavaScript

Эти решения обеспечат работу ввода даты в любых браузерах.

Комментарии