Введение в проверку ограничений HTML5
Интерактивные веб-сайты и приложения невозможно представить без форм, которые позволяют нам связаться с нашими пользователями, и к получить данные нам нужно для того, чтобы обеспечить бесперебойную работу с ними. Нам нужно действительный пользовательский ввод, Однако мы должны приобрести его таким образом, чтобы не расстраивает наши пользователи слишком много.
Хотя мы можем улучшить удобство использования наших форм с помощью грамотно выбранных шаблонов проектирования UX, в HTML5 также имеется встроенный механизм проверки ограничений, который позволяет нам ловить ошибки ввода прямо в интерфейсе.
В этом посте мы сосредоточимся на предоставляемая браузером проверка ограничений, и посмотрите, как разработчики веб-интерфейса могут безопасный ввод данных пользователем с использованием HTML5.
Зачем нам нужна проверка входных данных
Подтверждение ввода имеет две основные цели. Контент, который мы получаем, должен быть:
1. Полезно
Нам нужно полезные данные, с которыми мы можем работать. Мы должны заставить людей войти реалистичные данные в правильном формате. Например, никто, кто жив сегодня, не родился 200 лет назад. На первый взгляд получение таких данных может показаться забавным, но в долгосрочной перспективе это раздражает и наполняет нашу базу данных бесполезными данными..
2. Безопасный
Когда речь идет о безопасности, это означает, что нам нужно предотвратить внедрение вредоносного контента - умышленно или случайно.
Полезность (получение разумных данных) может быть достигнута только на стороне клиента, бэкэнд-команда не может помочь в этом. Для достижения безопасность, разработчики front- и backend должны работать вместе.
Если разработчики внешнего интерфейса правильно проверяют ввод на стороне клиента, бэкэнд-команде придется иметь дело с гораздо меньшим количеством уязвимостей. Взлом (сайт) часто влечет за собой отправка дополнительных данных, или же данные в неправильном формате. Разработчики могут бороться с дырами в безопасности, такими как эти, успешно сражаться с внешнего интерфейса.
Например, это руководство по безопасности PHP рекомендует проверять все, что мы можем на стороне клиента. Они подчеркивают важность проверки входных данных внешнего интерфейса, приводя множество примеров, таких как:
«Проверка ввода лучше всего работает с чрезвычайно ограниченными значениями, например, когда что-то должно быть целым числом, или буквенно-цифровой строкой, или URL-адресом HTTP».
В проверке входных данных веб-интерфейса наша работа заключается в наложить разумные ограничения на ввод пользователя. Функция проверки ограничений HTML5 предоставляет нам средства для этого.
Проверка ограничений HTML5
До HTML5 разработчики веб-интерфейса были ограничены проверка ввода пользователя с помощью JavaScript, Это был утомительный и подверженный ошибкам процесс. Чтобы улучшить проверку формы на стороне клиента, HTML5 представил проверка ограничений алгоритм, который работает в современных браузерах, и проверяет достоверность представленного ввода.
Чтобы сделать оценку, алгоритм использует связанные с проверкой атрибуты входных элементов, такие как ,
, а также
. Если вы хотите узнать, как происходит проверка ограничений шаг за шагом в браузере, ознакомьтесь с документом WhatWG..
Благодаря функции проверки ограничений HTML5 мы можем выполнить все стандартные задачи проверки ввода на стороне клиента без JavaScript, исключительно с HTML5.
Для выполнения более сложных задач, связанных с проверкой, HTML5 предоставляет нам JavaScript API для проверки ограничений мы можем использовать для настройки наших пользовательских сценариев проверки.
Проверка с семантическими типами ввода
HTML5 ввел семантические типы ввода что - помимо указания значения элемента для пользовательских агентов - также может использоваться для подтвердить ввод пользователя ограничивая пользователей определенным форматом ввода.
Помимо типов ввода, которые уже существовали до HTML5 (текст
, пароль
, Отправить
, сброс
, радио
, флажок
, кнопка
, скрытый
), мы также можем использовать следующее семантические типы ввода HTML5: Эл. адрес
,телефон
,URL
,число
,время
,Дата
,Дата и время
,Дата и время-местный
, месяц
,неделю
, спектр
, поиск
,цвет
.
Мы можем безопасно использовать типы ввода HTML5 в старых браузерах, так как они будут вести себя как поле в браузерах, которые их не поддерживают.
Давайте посмотрим, что происходит, когда пользователь вводит неправильный тип ввода. Допустим, мы создали поле ввода электронной почты со следующим кодом:
Когда пользователь вводит строку, которая не использует формат электронной почты, алгоритм проверки ограничения не отправляет форму, а также возвращает сообщение об ошибке:
То же правило применяется и к другим типам ввода, например, для тип = "URL"
пользователи могут отправлять только входные данные, соответствующие формату URL (начинается с протокола, такого как Http: //
или же FTP: //
).
Некоторые типы ввода используют дизайн, который даже не позволяет пользователям вводить неправильный формат ввода, например цвет
а также спектр
.
Если мы используем цвет
В качестве типа ввода пользователь должен либо выбрать цвет из палитры цветов, либо выбрать черный по умолчанию. Поле ввода ограничено дизайном, поэтому это не оставляет много шансов на ошибку пользователя.
Когда это уместно, стоит рассмотреть возможность использования HTML-тег, который работает аналогично этим типам ввода с ограничениями; это позволяет пользователям выбирать из выпадающего списка.
Используйте атрибуты проверки HTML5
Использование семантических типов ввода устанавливает определенные ограничения на то, что пользователям разрешено отправлять, но во многих случаях мы хотим пойти немного дальше. Это когда атрибуты, связанные с проверкой из тег может помочь нам.
Связанные с проверкой атрибуты относятся к определенным типам ввода (их нельзя использовать на все типы), на которые они накладывают дополнительные ограничения.
1. требуется
для получения правильного ввода всеми средствами
требуется
Атрибут является наиболее известным атрибутом проверки HTML. Это логический атрибут что значит не имеет никакого значения, мы просто должны поместить его в отметьте, если мы хотим использовать это:
Если пользователь забывает ввести значение в обязательное поле ввода, браузер возвращает сообщение об ошибке который предупреждает их, чтобы заполнить поле, и они не могу отправить форму пока они не предоставили действительный вклад. Вот почему важно всегда отметить визуально обязательные поля для пользователей.
требуется
атрибут может быть используется вместе со следующими типами ввода: текст
, поиск
, URL
, телефон
, Эл. адрес
, пароль
, Дата
, Дата и время
, Дата и время-местный
, месяц
, неделю
,время
, число
, флажок
, радио
, файл
, плюс с а также
HTML-теги.
2. мин
, Максимум
а также шаг
для проверки номера
мин
, Максимум
а также шаг
атрибуты позволяют нам накладывать ограничения на поля ввода чисел. Их можно использовать вместе с спектр
, число
, Дата
, месяц
, неделю
, Дата и время
, Дата и время-местный
, а также время
типы ввода.
мин
а также Максимум
атрибуты обеспечивают отличный способ легко исключить необоснованные данные. Например, приведенный ниже пример заставляет пользователей указывать возраст от 18 до 120 лет..
Когда алгоритм проверки ограничений сталкивается с пользовательским вводом, меньшим, чем мин
, или больше, чем Максимум
значение, оно не позволяет ему достичь бэкэнда и возвращает сообщение об ошибке.
шаг
атрибут указывает числовой интервал между допустимыми значениями числового поля ввода. Например, если мы хотим, чтобы пользователи выбирали только високосные годы, мы можем добавить шаг = "4"
приписать к полю. В приведенном ниже примере я использовал число
тип ввода, так как нет тип = «год»
в HTML5.
С заранее установленными ограничениями пользователи могут выбирать високосные годы только между 1972 и 2016 годами, если они используют маленькую стрелку вверх, которая идет с число
тип ввода. Они также могут ввести значение вручную в поле ввода, но если оно не соответствует ограничениям, браузер вернет сообщение об ошибке..
3. максимальная длина
для проверки длины текста
максимальная длина
атрибут позволяет установить максимальную длину символа для текстовых полей ввода. Может использоваться вместе с текст
, поиск
, URL
, телефон
, Эл. адрес
а также пароль
типы ввода, а также с HTML-тег.
максимальная длина
Атрибут может быть отличным решением для полей телефонных номеров, которые не могут содержать более определенного количества символов, или для контактных форм, где мы не хотим, чтобы пользователи писали более определенной длины.
Фрагмент кода ниже показывает пример для последнего, он ограничивает сообщения пользователя до 500 символов.
максимальная длина
атрибут не возвращает сообщение об ошибке, но браузер просто не позволяет пользователям печатать больше указанного числа символов. Вот почему так важно информировать пользователей об ограничении, иначе они не поймут, почему они не могут продолжать печатать.
4. шаблон
для проверки Regex
шаблон
атрибут позволяет нам использовать регулярные выражения в нашем процессе проверки входных данных. Регулярное выражение является предопределенный набор символов которые образуют определенный шаблон. Мы можем использовать его либо для поиска строк, которые следуют шаблону, либо для принудительного применения определенного формата, определенного шаблоном.
С шаблон
атрибут, который мы можем сделать последнее - ограничить пользователей, чтобы представить свои входные данные в формате, который соответствует заданному регулярному выражению.
шаблон
Атрибут имеет много вариантов использования, но он может быть особенно полезен, когда мы хотим подтвердить поле пароля.
В приведенном ниже примере требуется, чтобы пользователи вводили пароль длиной не менее 8 символов и содержали хотя бы одну букву и одну цифру (источник используемого мной регулярного выражения).
Еще несколько вещей
В этой статье мы рассмотрели, как использовать проверка формы, предоставленная браузером обеспечивается собственным алгоритмом проверки ограничений HTML5. Для создания наших пользовательских сценариев проверки нам нужно использовать API проверки ограничений, который может стать следующим шагом в совершенствовании навыков проверки формы..
HTML5 формы доступны с помощью вспомогательных технологий, поэтому нам не обязательно использовать ария-требуется
Атрибут ARIA для пометки обязательных полей ввода для программ чтения с экрана. Однако все еще может быть полезно добавить поддержку специальных возможностей для старых браузеров. Также возможно отказаться от проверки ограничений добавив NOVALIDATE
логический атрибут к элемент.