Кратко
СкопированоАтрибут required
добавляется обязательным полям формы. Если поле с таким атрибутом не заполнено, то при отправке формы браузер покажет предупреждение и отменит отправку.
Пример
СкопированоВ примере ниже поле для телефона является обязательным:
<form> <label> Ваше имя: <input type="text"> </label> <label> Ваш номер телефона (обязательно): <input type="tel" required> </label> <button type="submit">Отправить заявку</button></form>
<form> <label> Ваше имя: <input type="text"> </label> <label> Ваш номер телефона (обязательно): <input type="tel" required> </label> <button type="submit">Отправить заявку</button> </form>
Как пишется
СкопированоДостаточно написать атрибут required
без значения, ведь он булевый: если он есть — поле обязательное, а если нет — не обязательное. Если вам по какой-то причине нельзя использовать булевы атрибуты (например, в XML-разметке), напишите required
.
Атрибут required
можно использовать для <select>
, <textarea>
, а также для <input>
со следующими типами:
text
,search
,url
,tel
,email
,password
,date
,month
,week
,time
,datetime
,- local number
,checkbox
,radio
,file
.
Если в группе радиокнопок с одинаковым значением атрибута name
хотя бы у одной указан атрибут required
, то вся группа будет считаться обязательной. Поэтому лучше явно прописывать required
всем радиокнопкам в группе. При этом для чекбоксов с одинаковыми именами это не работает. Обязательным будет только тот чекбокс, у которого прописан атрибут.
Атрибут не сработает для любых кнопок, а также для полей ввода с типами color
и range
. Причина в том, что у таких полей существует значение по умолчанию, даже если оно явно не прописано в атрибуте value
. У <input type
это #000000
, а у <input type
это среднее значение между min
и max
. Так что браузер посчитает их заполненными в любом случае и не покажет предупреждение.
Кроме того, атрибут required
не работает для скрытых полей type
и для полей с атрибутом readonly
.
Как понять
СкопированоВ момент отправки формы браузер выполняет валидацию введённых данных. Если поле, у которого есть атрибут required
, не заполнено, то браузер не позволит отправить форму и покажет сообщение. Внешний вид и текст сообщения может отличаться в разных браузерах. Сообщение в Google Chrome:
Подсказки
Скопировано💡 Поля с атрибутом required
можно стилизовать при помощи псевдокласса :required
. Поля, у которых нет этого атрибута, стилизуются псевдоклассом :optional
.
На практике
Скопированосоветует Скопировано
🛠 Необходимо визуально выделять обязательные для заполнения поля формы. Почему-то исторически сложилось, что рядом с подписью для поля ставят звёздочку. Раньше под формой писали пояснение, что звёздочка значит обязательное поле. Но со временем пропало даже пояснение.
Звёздочка — плохой паттерн. Как минимум потому что скринридер прочитает её просто как «звёздочка». Лучше явно написать в скобках «(обязательное)». Тогда пользователь, каким бы инструментом он не пользовался, точно будет знать, что поле надо заполнить.