名称属性在HTML文档中是否必须是唯一的?

我记得阅读规范一次, id属性和name属性共享相同的名称空间,必须是唯一的。 从今以后,我一直试图在我的应用程序中满足这个要求,甚至为同一个元素赋予相同的idname

但最近我已经开始使用ASP.NET MVC 3,并且它(如PHP)可以在几个input控件上使用相同的name属性在服务器端形成一组值。 我试图查看规范中的相关部分 – 但没有find它。 也许我误解了一些东西,或者读错了文档?

那怎么样? 我想生成尽可能有效的HTML(在不同的应用程序4.01和5)。 我可以毫不畏惧地使用这个技巧吗? 或者我会违反一些东西,应该坚持独特的价值观?

name属性只对<form>和表单元素( <input><textarea><select> )有效。 它用于指定与在表单提交上提交的名称/值对关联的名称。

例如:

 <input type="checkbox" name="foo" value="1" /> 

如果选中将提交foo=1 。 在DOM中,您可以通过指定name作为索引来引用form.elements集合中的表单元素。 如果name不是唯一的,则集合返回一个元素数组而不是元素。 现代DOM的支持通过名称查找forms元素为:

  document.getElementsByName(nameValue) 

注意:即使只find一个元素,它总是返回一个数组。

id属性来自XML世界,并且是任何节点的唯一标识符,而不仅仅是表单元素。 与name属性不同,它在任何HTML节点上都是有效的。 也像name属性一样,它必须遵循有效的标识符规则。 标识应该以alpha开始,并且只包含alpha( [a-zA-Z] ),数字,连字符,下划线和冒号(注意,ASP.NET通过使用下划线开始保留ID来打破这个规则 – 因此它们总是会失败一个HTML / XML lint – 实际上是一些代理去除它们)。 要使用id查找任何HTML元素:

 document.getElementById(idvalue) 

这只返回一个DOM节点。

name属性不是唯一的。 例如,它用于分组单选button。 它代表了特定表单属性的价值。 id必须是唯一的。

ID应该是唯一的,但是可以使用多个具有相同名称的表单元素。 这是单选button如何工作的标准,所以你可以强制单选button组。