Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сделать поле обязательным

Короткий ответ

Добавьте полю атрибут required — браузер не отправит форму, пока его не заполнят:

<form>
  <label>Name <input name="name" required></label>
  <button>Send</button>
</form>

Нажмите «Send» с пустым полем: появится подсказка браузера, а фокус перейдёт к полю.

Звёздочка у подписи

Обязательные поля принято отмечать звёздочкой. Её можно добавить в CSS, а псевдокласс :has() найдёт подпись с обязательным полем внутри:

<style>
  label { display: block; margin-bottom: 8px; }
  label:has(:required)::after { content: " *"; color: crimson; }
</style>
 
<form>
  <label>Email <input type="email" required></label>
  <label>Phone <input type="tel"></label>
</form>

Объясните звёздочку один раз над формой: «Поля со звёздочкой обязательны».

Флажки и переключатели

required работает и у чекбокса — например, для согласия с условиями. У группы радиокнопок с одним name атрибут достаточно поставить одной из них.

Частая ошибка

Поле, состоящее только из пробелов, считается заполненным: required проверяет лишь, что значение не пустое. Кроме того, проверку в браузере легко обойти. Поэтому данные из формы всё равно проверяют на сервере — браузерная проверка лишь удобство для пользователя.

Функции из этого ответа

  • required — Делает поле обязательным: форма не отправится, пока оно пустое.
  • :required — Срабатывает у полей с атрибутом `required`; `:optional` — у полей без него.
  • <form> — Форма: собирает данные из полей и отправляет их на сервер.
  • <label> — Подпись к полю формы.
  • ::after — Создаёт виртуальный последний дочерний элемент — для значков, пометок и украшений после содержимого.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.