Можно ли без js заставить юзера заполнить хотя бы одно (любое,но не обязательно все) текстовое поле?

Рейтинг: 0Ответов: 1Опубликовано: 20.04.2015

Допустим,есть группа полей:

<input type="text" id="text1" />
<input type="text" id="text2" />
<input type="text" id="text3" />
<input type="submit" value="Отправить" />

Можно ли средствами html сделать так, чтобы форма, когда все поля пусты, не отправлялась, а когда хотя бы одно (или больше) заполнено - отправлялась? Ведь для type="radio" атрибут required работает не так,как для других типов input.. Можно ли его заставить как-то изменить поведение, или может быть есть какой-нибудь такой редкий атрибут типа required-group ?

Ответы

▲ 2Принят

На чистом HTML5 это реализовать невозможно. Атрибут required применяется к одному конкретному input'у и не затрагивает другие элементы. Других атрибутов, способных осуществлять валидацию на основании описанных вами правил, у inputнет. Поэтому либо вы используете JavaScript (проверка на хотя бы одно заполненное поле из списка не слишком сложная), либо валидируете на сервере.

Вы упомянули в качестве примера <input type="radio"/>. Это плохой пример, так как логика работы radio отличается от логики работы простого input'а. В частности, несколько элементов radio, имеющие одно имя, рассматриваются как один как с точки зрения отправки значения на сервер при submit'е формы, так и с точки зрения валидации required. Для текстовых input'ов такой фокус не проходит, даже если вы создадите несколько текстовых input'ов с одинаковыми именами, валидация required будет применяться к каждому отдельно.