Улучшите ваши формы с помощью HTML5!

Опубликовано:

Анне Ван Кестерен

Оригинал: http://dev.opera.com/articles/view/improve-your-forms-using-html5/

Перевод: Влад Мержевич

HTML  в действительности не обновлялся с версии 4 выпущенной ещё в 1998 году. Однако сообщество WHATWG работает над HTML с 2004 года, а затем передаёт материалы в W3C, где они становятся спецификацией HTML5. В этой статье показаны некоторые новые функциональные возможности форм HTML5 предлагаемые в главе Web Forms 2. Опера поддерживает Web Forms 2, начиная с версии 9.5 или более поздней версии.

autofocus и другие атрибуты

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

<form action="" method="get">
  <p><label>Поиск: <input name=search type="text" id="search"></label></p>
  <script>document.getElementById('search').focus()</script>
  <!-- остальная форма -->
</form>

Может быть написан с использованием новой функциональности следующим образом:

<form>
 <p><label>Поиск: <input name=search autofocus></label></p>
 <!-- остальная форма -->
</form>

Часть кода была удалена из примера и заменена новым атрибутом autofocus. Атрибут autofocus фактически убирает необходимый элемент <script> и атрибут id у <input>, который используется скриптом. Атрибут method может быть опущен для элемента <form>, потому что форма использует запрос GET по умолчанию. Кроме того, значение text используется для <input> по умолчанию. В Web Forms 2 вы можете также опустить атрибут action когда он содержит пустую строку. Действительно, это даст вам тот же результат.

Валидация форм

В настоящее время веб-разработчики используют классные скрипты для валидации формы на стороне клиента. Скоро вы сможете просто написать следующее:

<form>
 <p><label>Имя: <input name=name required></label></p>
 <p><label>E-mail: <input name=email type=email required></label></p>
 <p><label>Адрес: <input name=url type=url></label></p>
 <p><label>Комментарий: <textarea name=comment required></textarea></label></p>
 <p><input type=submit value=Поехали!></p>
</form>

Я утверждаю, что это читается почти так же как английский! Когда пользователь пытается отправить форму, пользовательский агент проверяет что все условия выполняются, и если это так, он отправляет форму, в противном случае показывает сообщение об ошибке. Конечно, вы всегда должны иметь проверку на стороне сервера, но в случае, если пользовательский агент поддерживает новые формы, это может спасти вашего пользователя от нескольких раундов ошибок. Лучше для юзабилити и пропускной способности канала.

В примере выше я ввел несколько новых элементов форм: email и url. А также новый атрибут доступный для всех элементов форм: required. Кроме того, Web Forms 2 включают поля для даты, времени и чисел.

Стилизация полей

Если вы хотите стилизовать обязательное поле формы (<input required>) это довольно тривиально с помощью некоторых новых псевдоклассов:

input:disabled { ... }
input:checked + label { ... }
input[type=button]:default { ... }
input:read-only { ... }

Другие статьи по теме

Поле для поиска

Создайте поисковое поле для браузеров Chrome и Safari как показано на рисунке ниже, имеющее следующее поведение. Если поле не активно, в нем отображается текст, при получении фокуса текст внутри поля исчезает. При наборе текст отображается красным цветом.

Поле для поиска

На сайтах часто востребован поиск по ключевым словам, для ввода которых используется текстовое поле. В HTML5 для поиска добавлено новое поле, синтаксис его следующий:

<input type="search" атрибуты>

Используемые атрибуты совпадают с текстовым полем.

HTML5формы