提问人:Nate 提问时间:6/20/2012 更新时间:12/3/2014 访问量:43484
可以有多个同名的HTML表单吗?
Is it OK to have multiple HTML forms with the same name?
问:
我想这样做是有正当理由的,但这是一个很长的故事,所以我会忘记试图解释为什么,只是问是否可以这样做。
我有一个页面,我需要有多个同名的表单,但我只想提交其提交按钮为单击的表单。例如,我的页面上可能包含以下内容:
<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>
这是可以接受的吗?
答:
是的,这是允许的,只有 必须是唯一的。然而,我不建议这样做,为什么还要让自己在路上感到困惑。id
该属性仅定义每个表单字段元素在发送到服务器时将表示的内容。name
评论
name
form
name
当用户单击提交按钮时,只有该表单才会生效。不过,最好给它们命名,这样你就不会混淆:)
关于 HTML 4.01 规范,您可以使用具有相同属性的元素,因为它们没有唯一性要求。但是,这样做会破坏这些属性的目的。它们旨在使在客户端脚本中引用表单变得更加容易:如果有,则引用该表单。form
name
<form name=foo>
document.foo
当使用相同的属性时会发生什么是不确定的,但浏览器似乎所做的是返回一个数组。在您的示例中,将是一个 3 元素数组,第一种形式。但这没有用,因为(假设文档中没有其他形式)您可以使用具有明确定义含义的 。name
document.foo
document.foo[0]
document.forms[0]
对于元素来说,属性本身已经过时了(但对于表单字段来说却不是,在表单字段中它仍然是必不可少的)。表单
上的 HTML 4.01 规范子句说:name
form
“ = cdata [CI]
此属性为元素命名,以便可以从样式表或脚本中引用该元素。小说为了向后兼容,已包含此属性。应用程序应使用该属性来标识元素。name
id
在 HTML5 草案中,即使是正式规则也不允许使用相同的属性。表单
上 name
属性的 HTML5 子句表示,其值“在它所在的集合中的元素中必须是唯一的,如果有的话”。这是一个令人困惑的表述,但最安全的做法是假设它在文档的元素中必须是唯一的。name
form
forms
form
评论
在 HTML5 中也可以。只有名称在表单本身中必须是唯一的。
请参阅文档:“该值不能是空字符串,并且该值在它所在的表单集合中的表单元素中必须是唯一的(如果有)。
评论
form name