Одним из первых рывков к HTML5 были WHATWG’s Web Формы 2.0, которые в народе называются XForms Basic. Их специфика состояла в новых элементах и компонентах форм, валидации и прочих мелочах. Сегодня все эти фишки можно найти в HTML5.
К сожалению вопрос совместимости в различных браузерах до сих пор стоит на первом месте. Рекордсменом в этой калии остаётся всё тот же старый, добрый и всеми любимый IE, который даже в новой версии (IE9 beta) не поддерживает большинство нововведений в формах HTML5. А что говорить о версиях младше?
Несмотря на это, разработчики хотят использовать нововведения - и будут их использовать! Сегодня мы взглянем на новые элементы, проверим их работу в разных браузерах, а вопросы совместимости будет решать с помощью javascript и CSS.
Инструмент: Modernizer
Для того чтобы тестировать работу HTML5 и CSS3 нам понадобится инструмент под названием Modernizr. Это небольшая javascript библиотека. Инструмент: Webforms2
Webforms2 так же является библиотекой javascript, имплементирующая кроссбраузерные элементы, которые были в предыдущих подверсиях HTML5, а точнее в "WHATWG Web Forms 2.0".
Мы будем её использовать для валидации текущих HTML5 элементов.
Мы создаём элемент div для каждого input с атрибутом type="range".
Затем мы используем Modernizr для проверки браузера на совместимость с данным элементом. Modernizr добавляет классы элементу html, позволяя вам реализовывать разные функциональности для разных браузеров. Так же он создаёт глобальные javascript объект которых содержит в себе много полезной инфы. Если браузер поддерживает элемент, то значение будет true, если нет, то false.
Для того чтобы проверить совместимость браузера с элементом используем Modernizr.inputtypes[type].
На данный момент мы можем реализовать только date при помощи jQuery UI Datepicker. Однако в будущем могут появиться и новые плагины, которые вы с лёгкостью сможете имплементировать:
На данный момент ни один браузер не поддерживает эту разновидность input, так что пока нам следует использовать только изложенную в этой статье технику:
Новый вид input search используется исключительно для разделения семантики, но довольно таки перспективен в будущем:
<input type="search">
Все остальные браузеры будут отображать его как обычное текстовое поле.
Поля URL и Email
Эти 2 элемента созданы для специальных целей, а именно для валидирования. Они очень полезны для мобильных браузеров. Данный элемент поддерживается в Safari, iOS(iPhone, iPad, iPod), и в некоторых версиях Android.
<input type="email"> <input type="url">
Для браузеров, не поддерживающих этот элементы можно использовать плагин Webforms2.
Атрибут Required
Свежий атрибут required предназначен для контроля над обязательными полями. Теперь для этого не нужен javascript.
<input type="email" required>
В браузерах, которые не используют данный атрибут, я рекомендую использовать плагин Webforms2. Если мы его подключим, то нам не надо будет переживать за обязательные поля.
Запомните, что важно вписывать атрибут name каждому элементу иначе required не будет работать.
Атрибут Pattern
Этот атрибут для любителей регулярных выражений. Если входящие данные не соответствуют шаблону, отправка формы не сработает:
В качестве примера, проверим формат телефонного номера:
Используем Webforms2 для имплементирования данной функциональности в тех браузерах, которые не поддерживают данную фичу.
Атрибут Autofocus
Название атрибута autofocus говорит само за себя. Поддерживается в браузерах, основанных на Webkit (Safari, Chrome, и т.д.) и Opera. Запомните, что только один элемент страницы может иметь данный атрибут.
<input type="email" autofocus>
Используем Webforms2 для отсталых браузеров. Атрибут Placeholder
Данный атрибут реализует то, что мы делали средствами javascript многие годы подряд. Служат для отображения краткого описания в поле input, которое будет исчезать при нажатии на данное поле.
<input name="name" placeholder="First Name">
Поддерживается последней FireFox Beta и браузерами на базе Webkit.
var initPlaceholder = function() { $('input[placeholder]').placehold(); };
Для реализации в остальных браузерах используйте jQuery плагин Placehold.
Атрибуты Min, Max и Step
Эти атрибуты используются в элементах date picker, number, и range. О предназначении min и max можно догадать по их наименованиям. step это шаг, с которым будет увеличиваться или уменьшаться значение в элементе input при клике. Если значение этого атрибута = 2, то значит в элементе будут отображены 0, 2, 4 и так далее...
Данные атрибуты работают в Opera и браузерах на базе Webkit. Во всех остальных могут быть имплементированы с помощью Webforms2.
Вывод
Сегодня мы выяснили как имплементировать поддержку новейших HTML5 элементов для все браузеров. Не обращайте внимания на тех, кто будет вас отговаривать. Работа данных плагинов уже проверена временем, так что можете начать их использовать прямо сейчас!