Как заставить браузеры выборочно игнорировать обязательный атрибут HTML5 в формах - PullRequest
2 голосов
/ 19 мая 2011

У меня есть стандартная форма HTML, которая разделена на два раздела с использованием элементов fieldset. Один раздел предназначен для ввода имени, адреса электронной почты и т. Д., А второй раздел - для ввода почтового индекса для функции автозаполнения адреса (поле поиска почтового индекса во втором разделе не имеет обязательного атрибута).

Каждый раздел имеет собственную кнопку отправки. Каждое из полей в первом разделе имеет поле формы с обязательным атрибутом HTML5.

У меня вопрос: когда пользователь вводит свой почтовый индекс в поле поиска почтового индекса, не вводя ничего в первом разделе, все поля в форме передаются в браузерах, которые не поддерживают этот атрибут (например, Firefox 3.6). В Firefox 4 (например) он учитывает обязательный атрибут и предотвращает отправку формы, если есть пустые поля с обязательным атрибутом. Однако это нарушает мою реализацию проверки ошибок и проверки формы (на стороне сервера, в PHP).

Итак, есть ли способ сообщить браузеру (в данном случае) игнорировать «обязательные» атрибуты первого раздела, когда нажата кнопка «Отправить» второго раздела?

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

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

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

Мне кажется, я вижу твою проблему.Я не верю, что в HTML есть что-то, что позволяет вам определять это более сложное правило проверки.Я думаю, вам придется:

  1. Разделить эти наборы полей на две отдельные формы на странице;

  2. Использовать две отдельные формы надве разные страницы;или

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

1 голос
/ 21 ноября 2013

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

<form>
main form
<form> </form>
<form> form1 </form>
<form> form2 </form>

</form>
...