我有充分的理由想要这样做,但这是一个很长的故事,所以我会忘记试图解释原因并且只是问是否可以这样做。
我有一个页面,我需要有多个同名的表单,但我只想要提交单击提交按钮的表单。例如,以下内容可能在我的页面上:
<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>
这可以接受吗?
答案 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)
当用户点击提交按钮时,只有该表单才会生效。不过,最好给它们命名,这样你就不会感到困惑:)