Совместимость атрибутов date и time HTML5 во всех браузерах
Быстрый ответ
Для обеспечения функциональности поля ввода даты <input type="date">
в различных браузерах используйте JavaScript-виджет для выбора даты, например, Pikaday. Пример базового применения:
<input type="text" id="datepick">
<script src="pikaday.js"></script>
<script>
new Pikaday({ field: document.getElementById('datepick') });
</script>
Таким подходом вы обеспечите корректную работу элемента ввода даты во всех браузерах.
Проверка поддержки браузером
Перед тем, как принять решение о использовании JavaScript-виджета, проверьте поддерживает ли ваш браузер <input type="date">
. Это можно сделать через свойство type
динамически созданного элемента:
var input = document.createElement('input');
input.setAttribute('type', 'date');
var unsupportedDateField = input.type !== 'date';
Если unsupportedDateField
возвращает true
, то браузер не поддерживает input[type="date"]
, и вам нужно включить JavaScript-виджет.
Точное определение возможностей с помощью Modernizr
Более точное определение поддерживает ли браузер функциональность можно провести с помощью библиотеки Modernizr:
<script src="modernizr.js"></script>
Если браузер не поддерживает тип date
:
if (!Modernizr.inputtypes.date) {
// Настало время подключить виджет для выбора даты.
}
На официальном сайте Modernizr представлен список полифилов, таких как WebShims, которые обеспечивают поддержку функционала HTML5.
Как поступить при слабой поддержке браузером
Если браузер не поддерживает <input type="date">
, можно использовать такие варианты, как jQuery UI Datepicker:
if (unsupportedDateField) {
$('#datepick').datepicker();
}
Или используйте плейсхолдер и jQuery.maskedinput для симуляции форматированного ввода текста:
<input type="text" id="datepick" placeholder="mm/dd/yyyy">
Используйте инструменты вроде WebShims для обеспечения обратной совместимости функционалом HTML5.
Альтернативы jQuery datepicker
Помимо jQuery UI Datepicker, существуют и другие, менее ресурсозатратные опции:
- Zebra Datepicker: Легкий в использовании и настраиваемый.
- Flatpickr: Богатый функционалом, поддерживает различные языки и темы.
- Pikaday: Простой в использовании, в него не входят лишние зависимости, работает на чистом JavaScript.
Визуализация
Поддержку <input type="date">
браузерами можно сравнить с работой различных брендов телевизоров:
| Браузер | Совместимость | Визуально |
| -------------- | -------------- | ------------ |
| Chrome TV | ✅ | 📺✨ |
| Firefox TV | ✅ | 📺✨ |
| Safari TV | ❌ | 📺🚫 |
| IE TV | ❌ | 📺🚫 |
Тем, кто "не ловит сигнал", необходимо предложить универсальное решение (полифил):
new Datepicker(remoteControl);
Использование легковесных библиотек
Библиотеки Zebra Datepicker и Pikaday обеспечивают базовую функциональность без лишнего веса. При использовании библиотек, не забывайте проводить тестирование в различных условиях, включая мобильные браузеры.
Создание надежного пользовательского опыта
Keywords берите на заметку о пользовательском опыте при интеграции вспомогательного решения: используйте текущую дату для предзаполнения, поддерживайте различные форматы дат, настраивайте локализацию календаря.
Борьба с внешними зависимостями
Внешние библиотеки, как, например, jQuery UI, увеличивают количество HTTP-запросов и время загрузки страницы. Минимизируйте нагрузку с помощью CDN или объединения JS-файлов.
Полезные материалы
- <input>: Элемент ввода (форма ввода) – HTML | MDN — Подробное руководство по элементу
<input>
. - Типы ввода даты и времени | Can I use... — Сервис для проверки поддержки
input[type="date"]
браузерами. - Методы даты в JavaScript — Углубите свое понимание использования объекта
Date
в JavaScript. - Datepicker | jQuery UI — Популярный jQuery-виджет для выбора даты.
- Moment.js | Главная — Инструмент для удобной работы с датами в JavaScript.
- Лучший плагин для выбора даты и времени на jQuery – Zebra Datepicker — Легкий плагин для выбора даты.
- Введение в flatpickr — Легкий и многофункциональный виджет для выбора даты и времени.