Вопрос по html-form, html, html5 – Можно ли иметь несколько HTML-форм с одним и тем же именем?

17

У меня есть веская причина хотеть сделать это, но это длинная история, поэтому я забыл попытаться объяснить почему и просто спросить, можно ли это делать.

У меня есть страница, на которой мне нужно иметь несколько форм с одинаковым именем, но я хочу, чтобы только форма, кнопка отправки которой была нажата, была отправлена. Например, на моей странице может быть следующее:

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

text

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

text

<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>

Это приемлемо?

зачем использоватьform name совсем:stackoverflow.com/questions/8946320/… Ciro Santilli 新疆改造中心 六四事件 法轮功
onlinewebcheck.com обнаруживает повторяющиеся ошибки имени формы в документах HTML5 Albert Wiersch
validator.w3.org BalusC

Ваш Ответ

4   ответа
18

form элементы с одинаковымиname атрибут, так как к ним нет требования уникальности. Однако это наносит ущерб цели таких атрибутов. Они предназначены для облегчения обращения к формам в сценариях на стороне клиента: если у вас есть<form name=foo>, затемdocument.foo относится к этой форме.

Неизвестно, что происходит, когда то же самоеname атрибут используется, но браузеры, похоже, возвращают массив. В вашем примереdocument.foo будет 3-элементным массивом, сdocument.foo[0] быть первой формой. Но это бесполезно, поскольку (при условии, что в документе нет других форм), вы можете использоватьdocument.forms[0]с четко определенным значением.

name сам атрибут устарел дляform элементы (но не для полей формы, где это продолжает быть существенным).Спецификация HTML 4.01 наform говорит:

& # X201C;name = cdata [CI]     Этот атрибут называет элемент так, чтобы на него можно было ссылаться из таблиц стилей или скриптов. Заметка. Этот атрибут был включен для обратной совместимости. Приложения должны использоватьid атрибут для идентификации элементов. & # x201D;

В черновиках HTML5 даже формальные правила запрещают использование одного и того жеname приписывать.HTML5 предложение оname attribute on form говорит, что его значение должно быть уникальным средиform элементы вforms коллекция, в которой он находится, если есть & # x201D ;. Это запутанная формулировка, но безопаснее предположить, что она должна быть уникальной вform элементы документа.

@Alohci, это не определено в текущих спецификациях. Черновики HTML5 определяют механизм для этого, но он также налагает требование уникальности.
Да, справедливо. Обсуждение того, что такое HTML 4, что такое HTML5 и какие пользовательские агентыdoучитывая, что у них нет отдельных режимов HTML 4 и HTML5, иногда это бывает очень сложно.
Бит о document.foo для случая множественных совпадающих имен не определен, это не то, что в разделе 3.1.4 средства доступа к дереву DOMdev.w3.org/html5/spec/dom.html#dom-document-namedItem-which до конца 3.1.4 определяет?
0

в действие вступает только эта форма. И все-таки лучше назвать их, чтобы вы не растерялись :)

1

самой формы.

См. Документы: & quot; значение не должно быть пустой строкой, а значение должно быть уникальным среди элементов формы в коллекции форм, в которой оно находится, если оно есть. & Quot;

Это может вводить в заблуждение. В HTML5W3C requires a form's name быть уникальным в коллекции форм, если таковые имеются. Но элементы & apos;nameS в форме может бытьany non-empty string Кроме _charset_ а такжеisindex.
10

idдолжны быть уникальными. Однако я бы не рекомендовал этого, зачем даже ставить себя в тупик в будущем.

name Атрибут определяет только то, что будет представлен каждый элемент поля формы при отправке на сервер.

name атрибутform Элемент не влияет на данные, отправляемые на сервер. Вы, возможно, перепутали это сname атрибуты для полей формы.

Похожие вопросы