Можно ли иметь несколько HTML-форм с тем же именем? - программирование
Подтвердить что ты не робот

Можно ли иметь несколько HTML-форм с тем же именем?

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

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

<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>

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

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

Ответ 3

Это также нормально в HTML5. Только имя должно быть уникальным внутри самой формы.

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

Ответ 4

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