Как разработать форму, которая хорошо подходит для различных форматов имён и адресов? Незначительные сбои в работе формы раздражают пользователей и могут привести к тому, что они покинут ваш сайт или откажутся от совершения покупки или регистрации.
В этой лабораторной работе показано, как создать простую в использовании и доступную форму, которая подойдет большинству пользователей.
Шаг 1: Максимально эффективно используйте элементы и атрибуты HTML
Эту часть лабораторной работы вы начнете с пустой формы, состоящей только из заголовка и кнопки.
Затем вы начнете добавлять входные данные. (CSS и немного JavaScript уже включены.)
Нажмите EDIT ON CODEPEN , чтобы редактировать проект.
Добавьте поле имени в элемент
<form>
с помощью следующего кода:
<section>
<label for="name">Name</label>
<input id="name" name="name">
</section>
Это может показаться сложным и повторяющимся для всего лишь одного поля имени, но это уже многое делает.
Вы связали label
с input
, сопоставив атрибут for
label
с name
или id
поля input
. Нажатие или щелчок по метке перемещает фокус на поле ввода, делая его гораздо больше, чем само поле ввода, — что удобно для пальцев, больших пальцев и мыши! Программы чтения с экрана озвучивают текст метки, когда фокус попадает на метку или поле ввода метки.
А как насчёт name="name"
? Это имя (которое, кстати, и есть "name"!), связанное с данными из этого поля ввода, которые отправляются на сервер при отправке формы. Добавление атрибута name
также означает, что данные из этого элемента будут доступны API FormData .
Шаг 2: Добавьте атрибуты, чтобы помочь пользователям вводить данные
Что происходит при нажатии или щелчке по полю «Имя» в Chrome? Вы должны увидеть варианты автозаполнения, сохранённые браузером, и варианты, подходящие для этого поля, учитывая его name
и id
.
Теперь добавьте autocomplete="name"
к вашему входному коду, чтобы он выглядел так:
<section>
<label for="name">Name</label>
<input id="name" name="name" autocomplete="name">
</section>
Перезагрузите страницу в Chrome и нажмите или щёлкните по полю «Имя» . Какие различия вы видите?
Вы должны заметить небольшое изменение: с autocomplete="name"
подсказки теперь представляют собой конкретные значения, которые ранее использовались в полях формы, где также был autocomplete="name"
. Браузер не просто угадывает, что может подойти: вы контролируете ситуацию. Вы также увидите опцию "Управление…" для просмотра и редактирования имён и адресов, сохранённых браузером.

Теперь добавьте атрибуты проверки ограничений maxlength
, pattern
и required
, чтобы ваш входной код выглядел следующим образом:
<section>
<label for="name">Name</label>
<input id="name" name="name" autocomplete="name"
maxlength="100" pattern="[\p{L} \-\.]+" required>
</section>
maxlength="100"
означает, что браузер не позволит вводить данные длиной более 100 символов.pattern="[\p{L} \-\.]+"
использует регулярное выражение, допускающее использование букв Unicode , дефисов и точек. Это означает, что такие имена, как Françoise или Jörg, не считаются «недопустимыми». Этого не происходит, если вы используете значение\w
, которое допускает только символы латинского алфавита .required
означает… обязательно! Браузер не позволит отправить форму без данных в этом поле и выдаст предупреждение и подсветит поле при попытке его отправки. Дополнительный код не требуется!
Чтобы проверить, как работает форма с этими атрибутами и без них, попробуйте ввести данные:
- Попробуйте ввести значения, не соответствующие атрибуту
pattern
. - Попробуйте отправить форму с пустым полем. Встроенная функция браузера предупредит о пустом обязательном поле и установит на нём фокус.
Шаг 3: Добавьте в форму гибкое поле адреса.
Чтобы добавить поле адреса, добавьте в форму следующий код:
<section>
<label for="address">Address</label>
<textarea id="address" name="address" autocomplete="address"
maxlength="300" required></textarea>
</section>
textarea
— это самый гибкий способ ввода адреса пользователем, она отлично подходит для копирования и вставки.
Не разбивайте форму адреса на такие компоненты, как название улицы и номер дома, если в этом нет необходимости. Не заставляйте пользователей вписывать свой адрес в поля, которые не имеют смысла.
Теперь добавьте поля «Почтовый индекс» и «Страна или регион» . Для простоты здесь указаны только первые пять стран. Полный список включен в заполненную форму адреса .
<section>
<label for="postal-code">ZIP or postal code (optional)</label>
<input id="postal-code" name="postal-code"
autocomplete="postal-code" maxlength="20">
</section>
<section id="country-region">
<label for="">Country or region</label>
<select id="country" name="country" autocomplete="country"
required>
<option selected value="SPACER"> </option>
<option value="AF">Afghanistan</option>
<option value="AX">Åland Islands</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
</select>
</section>
Вы увидите, что поле Почтовый индекс не является обязательным: это связано с тем, что во многих странах почтовые индексы не используются . ( Global Sourcebook предоставляет информацию о форматах адресов для 194 различных стран, включая примеры адресов.) Метка Страна или регион используется вместо Страна , поскольку некоторые варианты из полного списка (например, Соединенное Королевство) не являются отдельными странами (несмотря на значение autocomplete
).
Шаг 4: Предоставьте клиентам возможность легко вводить адреса доставки и выставления счетов
Вы создали высокофункциональную форму адреса, но что делать, если вашему сайту требуется несколько адресов, например, для доставки и выставления счетов? Попробуйте обновить форму, чтобы клиенты могли вводить адреса доставки и выставления счетов. Как максимально ускорить и упростить ввод данных, особенно если два адреса одинаковые? В статье, прилагаемой к этой практической работе, объясняются методы работы с несколькими адресами . В любом случае обязательно используйте правильные значения autocomplete
!
Шаг 5: Добавьте поле номера телефона
Чтобы добавить поле ввода номера телефона, добавьте в форму следующий код:
<section>
<label for="tel">Telephone</label>
<input id="tel" name="tel" autocomplete="tel" type="tel"
maxlength="30" pattern="[\d \-\+]+" enterkeyhint="done"
required>
</section>
Для номеров телефонов используйте единый ввод: не разбивайте номер на части. Это упрощает ввод данных или копирование и вставку, упрощает проверку и позволяет браузерам автоматически заполнять данные.
Есть два атрибута, которые могут улучшить пользовательский опыт ввода номера телефона:
-
type="tel"
гарантирует, что пользователи мобильных устройств получат правильную клавиатуру. -
enterkeyhint="done"
устанавливает метку клавиши Enter на мобильной клавиатуре, чтобы показать, что это последнее поле и теперь можно отправить форму (по умолчанию —next
).

Теперь ваша полная адресная форма должна выглядеть так:
- Проверьте свою форму на разных устройствах. На какие устройства и браузеры она ориентирована? Как можно улучшить форму?
Есть несколько способов протестировать вашу форму на разных устройствах:
- Используйте режим устройства Chrome DevTools для имитации мобильных устройств.
- Отправьте URL-адрес с вашего компьютера на телефон .
- Используйте такой сервис, как BrowserStack , для тестирования на различных устройствах и браузерах.
Узнать больше
Аналитика и мониторинг реальных пользователей : обеспечьте возможность тестирования и мониторинга производительности и удобства использования вашей формы для реальных пользователей, а также для проверки успешности изменений. Вам следует отслеживать производительность загрузки и другие показатели веб-страниц , а также аналитику страниц (какая доля пользователей уходит с вашей формы адреса, не заполнив её? сколько времени пользователи проводят на страницах с формой адреса?) и аналитику взаимодействия (с какими компонентами страницы пользователи взаимодействуют, а с какими нет?).
Где находятся ваши пользователи? Как они форматируют свои адреса? Какие названия они используют для компонентов адреса, таких как почтовый индекс? «Компульсивное руководство Фрэнка по почтовым адресам» содержит полезные ссылки и подробные инструкции, подробно описывающие форматы адресов в более чем 200 странах.
Селекторы стран печально известны своей неудобным использованием . Рекомендуется избегать элементов select для длинных списков , а стандарт кодирования стран ISO 3166 в настоящее время содержит 249 стран ! Вместо тега
<select>
можно рассмотреть альтернативный вариант, например, селектор стран Института Баймарда .Можно ли разработать лучший селектор для списков с большим количеством элементов? Как обеспечить доступность вашего дизайна на различных устройствах и платформах? (Элемент
<select>
не очень хорошо подходит для большого количества элементов, но, по крайней мере, его можно использовать практически во всех браузерах и на вспомогательных устройствах!)В записи блога <input type="country" /> обсуждается сложность стандартизации селектора стран. Локализация названий стран также может быть проблематичной. На сайте Countries Lists есть инструмент для загрузки кодов и названий стран на разных языках и в разных форматах.