是否可以使用多个具有相同名称的HTML表单?

时间:2012-06-20 01:25:54

标签: html html5 html-form

我有充分的理由想要这样做,但这是一个很长的故事,所以我会忘记试图解释原因并且只是问是否可以这样做。

我有一个页面,我需要有多个同名的表单,但我只想要提交单击提交按钮的表单。例如,以下内容可能在我的页面上:

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

这可以接受吗?

4 个答案:

答案 0 :(得分:18)

关于HTML 4.01规范,您可以使用具有相同form属性的name元素,因为它们没有唯一性要求。但这样做会破坏这些属性的目的。它们旨在使客户端脚本中的表单更容易引用:如果您有<form name=foo>,则document.foo引用该表单。

未定义使用相同的name属性时会发生什么,但浏览器似乎做的是返回一个数组。在您的示例中,document.foo将是一个3元素数组,document.foo[0]是第一个形式。但是这没用,因为(假设文档中没有其他形式)你可以使用document.forms[0],具有明确的含义。

name元素本身已过时form元素(但不适用于表单字段,它始终是必不可少的)。 HTML 4.01 spec clause on form说:

name = cdata [CI]     此属性为元素命名,以便可以从样式表或脚本引用它。注意。包含此属性是为了向后兼容。应用程序应使用id属性来标识元素。“

在HTML5草案中,即使是正式规则也不允许使用相同的name属性。 HTML5 clause on the name attribute on form表示其值“必须在form集合中的forms元素中是唯一的,如果有的话”。这是一个令人困惑的表述,但最安全的假设它必须在文档的form元素中是唯一的。

答案 1 :(得分:10)

是的,允许,只有id必须是唯一的。但是,我不建议这样做,为什么甚至让自己处于困境之中。

name属性仅定义每个表单字段元素在发送到服务器时将表示的内容。

答案 2 :(得分:1)

在HTML5中也可以。只有名称在表单内部必须是唯一的。

请参阅文档:&#34;值不能是空字符串,并且值必须在它所在的表单集合中的表单元素中是唯一的。(#34;

答案 3 :(得分:0)

当用户点击提交按钮时,只有该表单才会生效。不过,最好给它们命名,这样你就不会感到困惑:)