В этой заметке я опишу процесс создания формы обратной связи с использованием новых элементов HTML5. Как известно, в HTML5 у форм появилось несколько новых типов полей. Например, такие как: ползунки (sliders), счетчики (spinboxes), поле для ввода даты, адреса электронной почты, URL и некоторые другие. К сожалению, эти элементы поддерживаются даже не всеми современными браузерами, не говоря об устаревших браузерах. Некоторые браузеры, такие как Google Chrome, Opera поддерживает новые элементы лучше всех остальных браузеров. Проверить свой браузер на поддержку новых элементов форм можно на сайте http://www.miketaylr.com/
Если какой-либо элемент формы не поддерживается браузером, вместо него будет отображено обычное текстовое поле.
Приведенный выше код формы отлично работает в браузерах, поддерживающих новые типы полей, но хотелось бы, чтобы остальные браузеры также отображали красивую форму с ползунками, счетчиками и возможностью выбора даты из календаря. К страничке с формой «привязан» файл со стилями, его содержимое я не буду приводить в заметке. В этом нам помогут библиотеки javaScript-библиотеки Modernizr и jQuery UI. Обе библиотеки можно настроить «под себя», отключив ненужный функционал – таким образом можно оптимизировать их размер.
После загрузки библиотек, я подключил их к странице с формой. Кроме файлов с js-кодом, не забудьте подключить файлы со CSS-стилями и библиотеку jQuery.
Теперь необходимо написать небольшой скрипт, который будет проверять поддержку типов элементов формы и заменять их элементами jQuery UI, в случае, если тип элемента не поддерживается браузером.
Код получился несложный, его можно понять без объяснений.
В результате использования jQuery UI, мы практически добились внешнего сходства обеих форм. Работают формы тоже одинаково – данные отправляются не зависимо от того, поддерживает ли браузер новые типы полей или они генерируются jQuery UI.
В jQuery UI нет возможности создать поля типа email и url – в браузерах, где они не поддерживаются посетитель увидит обычные текстовые поля. По моему мнению, в этом нет ничего страшного, посетитель все равно может ввести данные в эти поля и отправить их.