Предупреждение о незаполненном поле в html. Выделение обязательных полей формы с использованием CSS3. Одноколоночная форма - лучшее решение

  • Перевод

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

1. Четко выделяйте обязательные для заполнения поля

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

Форма регистрации Geico предоставляет однозначные инструкции о том, в каком формате ожидаются вводимые данные

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

На форме регистрации Zappos.com обязательные поля выделены звездочкой (*). Необязательные поля так же явно обозначены.

2. Используйте удобные и подробные сообщения об ошибках

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

3. Используйте проверку формата данных на стороне клиента (JavaScript)

Использование JavaScript проверки данных экономит время пользователя, а также снижает нагрузку на веб-сервер, освобождая его от обработки входящих значений полей формы. Проверка на стороне клиента позволяет пользователям видеть, что они сделали ошибку только что, а не после отправки формы. Это справедливо для любых полей, которые не связываются с вашей базой данных. Такие например, как проверка формата адреса электронной почты или количество цифр в номере телефона.


Маркировка поля формы регистрации по мере необходимости

Внешний вид может отличаться в зависимости от вашей темы. Мы должны сделать первые две регистрационные формы обязательными полями. Он открывает настройки поля формы регистрации. На этой странице есть флажок с ярлыком - обязательно. Нам нужно проверить его и сохранить, и повторить процесс со вторым полем.

Как только мы закончим, давайте перейдем на передний план и увидим любую разницу в нашей форме. Как мы видим, перед символами перед двумя ярлыками полей появляются звездочки. Это универсально означает требуемое поле. Далее следует убедиться, что они делают именно то, что они намереваются сделать, пытаясь отправить форму, сохраняя первые два поля пустым.

Форма регистрации на SurveyGizmo дает знать, если формат введенного вами адреса электронной почты неверный.

4. Визуально выделяйте заполняемые поля, чтобы пользователь не потерялся

Убедитесь в том, что визуально можно определить какое именно поле пользователь заполняет в данный момент. Это можно реализовать с помощью селектора псевдо-класса focus: в CSS.


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

Добавление текста справки в поля формы регистрации

Мы вернемся к настройкам поля формы регистрации. Оба параметра находятся под полем «Ярлык». Теперь передняя часть формы выглядит так. Если мы переместим курсор в первый поле ввода, то появляется подсказка под ним автоматически.

Удалить звездочки из обязательных полей регистрационной формы

Теперь все работает отлично. Есть еще одна вещь: многие люди не хотят, чтобы красные звездочки появлялись на их формах. В нем указано «Показать звездочку» в поле «Обязательные поля». Если мы уберем его, сохраните и перезагрузите нашу форму.

Веб-форма на Wufoo визуально выделяет активные элементы цветом фона.
Как минимум реализуйте выделяемую границу для полей - по умолчанию это сделают за вас браузеры, но убедитесь что цвет отличается от дизайна сайта (фона).


Google Chrome выделяет активный элемент желтой рамкой. Firefox светло голубой.

5. Показывайте результаты прогресса

Если ваша веб-форма объемная и состоит из нескольких страниц (или имеет несколько шагов), убедитесь что пользователь постоянно получает сведения о ходе выполняемых действий, о том, сколько еще времени может ему понадобиться для заполнения. Такое часто встречается в случаях онлайн-опроса (исследования) с множеством вопросов или в процессе оформления заказа в интернет магазине.
Все что нужно, это писать “Шаг 4 из 5” или что-то в этом роде. Если пользователи будут продолжают нажимать кнопку “продолжить”, четко не понимая когда будет последний шаг, то они прекратят заполнение формы раньше, чем вы можете предположить.


Оформление заказа на Amazon имеет 4 страницы. Форма сообщает где вы сейчас и сколько еще осталось до завершения.
Конечно лучшей альтернативой было бы сократить вашу веб-форму - если этого сделать нельзя, то хотя бы дайте пользователю информацию о том, насколько он близок от завершения выполняемых действий.

6. Периодически сохраняйте (кешируйте) данные формы

На формах с несколькими страницами или шагами часто можно допустить ошибку. Для избежания потери данных необходимо реализовать способ сохранения введенной пользователем информации для каждой сессии. Это повышает надежность и процент того, что форма будет заполнена даже после таких ситуаций, когда пользователь уходит с данной страницы (например нажимает кнопку назад в браузере). Необходимость заново заполнять все поля формы может заставить пользователя уйти.

7. Не используйте стандартный текст “Submit” (отправить)

Вместо того, чтобы ваша кнопка на форме называлась “Submit” (отправить), используйте такой текст, чтобы он напоминал пользователю о его действиях. Например “Зарегистрироваться”, или еще лучше - дайте пользователю узнать о преимуществах после заполнения формы.


Форма регистрации Backpack имеет одноколоночную форму

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

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

На форме регистрации Basecamp текст «Submit» заменили на более полезный.

8. Кнопка “Отменить” заставляет колебаться

Представьте, что вы в магазине покупаете новую рубашку и продавец спрашивает у вас: “Вы действительно хотите именно эту рубашку?”. Вы все равно ее купите? Скорее всего нет. Возможно вы будете сомневаться, думая что продавец посчитал рубашку неподходящей.
Тоже происходит и с веб-формами: использование кнопки “отменить” может заставить ваших пользователей дважды подумать о том, что они заполняют.

9. Показывайте пользователям поля в правильном формате

Если вы спрашиваете у пользователей определенную информацию - такую как номер телефона или кредитной карты - дайте им им знать, что вы ожидаете. Если пароль должен иметь определенное количество знаков или он должен содержать определенный набор символов, четко описывайте эти требования. Это снижает неясность и ускоряет процесс заполнения.


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

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

Форма регистрации Geico предоставляет однозначные инструкции о том, в каком формате ожидаются вводимые данные.

10. Одноколоночная форма - лучшее решение

В соответствии с исследованием движения глаз от cxpartners, дизайн агенства по изучению пользовательского взаимодействия, сканирование формы вниз предпочтительнее, чем слева направо. Это уменьшает количество движения глаз, которое нужно совершить для заполнения формы.
Одноколоночная форма
Форма регистрации Backpack имеет одноколоночную форму.
Форма с несколькими колонками

В данном уроке мы сделаем небольшой приятный глазу эффект для обязательных полей в форме. Большинство веб форм разрабатывается в минимальном исполнении, только для сбора данных пользователя. Подумайте о том, сколько посетителей отказывались от заполнения формы, потому что она содержала множество полей. Но также есть много форм, которые в необязательных к заполнению полях запрашивают дополнительную информацию, которую посетитель хочет или должен предоставить. Например, формы заказа или формы классификации.

В то время как это имеет смысл с точки зрения дизайна программного обеспечения, он не обязательно согласуется с тем, как пользователи видят формы. При представлении требуемых ярлыков пользователи фактически предлагали меньше информации, а не больше. Обращая внимание на поля как обязательные, мы также рискуем подорвать пользователей врожденное желание обмениваться информацией. Хотя символ звездочки является долговременным соглашением, он остается потенциально двусмысленным значком без четкого смыслового значения.

Аналоговые наборщики исторически использовали звездочки для обозначения пропусков или сносок, но это соглашение не имеет четкой привязки к его использованию в Интернете. Чтобы текст этой легенды был наиболее полезен, он должен появляться в потоке документа над полями формы а не в конце формы. К сожалению, это нарушает традиционный шаблон макета, созданный аналоговой моделью сноски. При замене звездочки словом «требуется» будут рассмотрены проблемы с размещением легенды и уменьшением двусмысленности, практичным или эстетически идеальным для этого.

Идея заключается в том, чтобы выделять только обязательные к заполнению поля. Такая задача обычно решается установкой маленького символа * или подобного обозначения. Но мы пойдем дальше и добавим интерактивный эффект для лучшего визуального выделения обязательных полей.

Для реализации идеи обернем метки и поля формы в два элемента div , которые позволят нам применить различные эффекты. Внешний контейнер будет иметь дополнительный класс, если поле обязательно для заполнения (af-required ):

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

Рассмотрим стили второго примера демонстрации, который использует скрытие необязательных полей с помощью масштабирования. Мы будем уменьшать высоту другого контейнера, когда внутренний будет уменьшаться в масштабе.

Хотя возникает соблазн предположить, что это представляет собой более быстрый, более плавный и, следовательно, лучший пользовательский опыт, это предположение не обязательно поддерживается данными. Очевидно, это означает, что поле не может оставаться пустым, но это также означает, что в зависимости от других атрибутов или типа поля будут приняты только определенные типы значений.

Позже в этой главе мы рассмотрим различные способы предоставления браузерам информации о том, какие данные ожидаются в форме. Если требуемое поле пусто, форма не будет отправлена. Для входных элементов ввод с клавиатуры приведет к вводу данных в этот элемент.

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

Af-outer { overflow: hidden; height: 70px; box-shadow: 0 1px 0 #f5f5f5 inset; transition: all 0.5s linear; }

Для внутреннего контейнера установим центр перехода в значение “center top”, чтобы видеть процесс уменьшения высоты. Изначально масштаб имеет значение 1 (не обязательно устанавливать его):

Обязательный атрибут действителен для любого типа ввода, кроме кнопки, отправки, изображения, диапазона, цвета и скрытых объектов, все из которых обычно имеют значение по умолчанию, поэтому атрибут будет избыточным. Давайте добавим требуемый атрибут в нашу регистрационную форму. Мы укажем необходимые поля имени, адреса электронной почты, пароля и даты начала подписки.

Рисунок 1, Рисунок 2 и Рисунок 3 показывают поведение требуемого атрибута при попытке отправить форму. Вы также можете создавать допустимые и недопустимые поля с допустимыми и: недопустимыми псевдоклассами соответственно. Мы добавляем фоновое изображение к полям требуемой формы. Мы не можем включать сгенерированный контент на входе, поскольку они заменены или пустые элементы, поэтому вместо этого мы используем фоновое изображение. Мы также добавили отдельные фоновые изображения в допустимые и недопустимые поля.

Af-inner { padding: 15px 20px 15px 20px; transform-origin: center top; transform: scale(1); transition: all 0.5s linear; }

В верху формы имеется кнопка (чекбокс) с id af-showreq . При нажатии на кнопку будет происходит изменение масштаба дополнительных полей. Мы используем псевдо-класс :not для получения нужных элементов, но можно устанавливать классы для дополнительных полей и получать к ним доступ через комбинаторы родственников.

Целевые стили для старых браузеров

Это изменение проявляется только тогда, когда элемент формы имеет фокус, чтобы форма выглядела слишком захламленной. Если ваш подсказка превышает размер поля, опишите требования в атрибуте заголовка ввода, в метке или в тексте рядом с элементом ввода. Некоторые разработчики предлагают добавить «например» в качестве части текста-заполнителя, чтобы было очевидно, что это текст заполнителя, а не фактически заполненные данные.

Затем вам нужно настроить два обработчика событий: один, чтобы очистить значение поля от фокуса, а другое - заменить значение заполнитель на размытие, если значение элемента управления формы по-прежнему является пустой строкой. Вот наш полигон заполнителя.

Уменьшим высоту внешнего контейнера и масштаб внутреннего:

#af-showreq:checked ~ .af-form .af-outer:not(.af-required) { height: 0px; visibility: hidden; } #af-showreq:checked ~ .af-form .af-outer:not(.af-required) .af-inner { transform: scale(0); opacity: 0; }

Установка свойства visibility: hidden дает гарантию, что можно будет переключаться на другие поля с помощью клавиатуры. Здесь нельзя использовать display: none, потому что не будет работать переход.

Четко выделяйте обязательные для заполнения поля

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

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