20

我想这样做是有正当理由的,但这是一个很长的故事,所以我会忘记解释原因,只是问是否可以这样做。

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

<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

4 回答 4

21

关于 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 规范条款form说:

“<code>name = cdata [CI] 此属性命名元素,以便可以从样式表或脚本中引用它。笔记。包含此属性是为了向后兼容。应用程序应该使用该id属性来识别元素。”</p>

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

于 2012-06-20T03:57:43.110 回答
10

是的,它是允许的,只有id's 必须是唯一的。但是,我不会推荐它,为什么还要让自己在路上感到困惑。

name属性仅定义每个表单字段元素在发送到服务器时将被表示为什么。

于 2012-06-20T01:28:42.860 回答
1

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

请参阅文档:“该值不能是空字符串,并且该值在它所在的表单集合中的表单元素中必须是唯一的,如果有的话。”

于 2014-12-03T15:54:02.927 回答
0

当用户单击提交按钮时,只有该表单才会生效。不过,最好命名它们,以免您感到困惑:)

于 2012-06-20T01:31:45.407 回答