使用“名称”是否多余?现代Web开发中输入字段的属性?
题
我注意到很多网站的表单都包含“name”字样的输入字段。属性是指定的,即使它不用于样式或脚本目的!
此外,根据官方文件关于HTML文档中的表单...
name = cdata [CI] 此属性名称 该元素可以被引用 来自样式表或脚本。注意。 此属性已包含在内 向后兼容性。应用 应该使用id属性 识别元素。
所以,我的问题是:此属性是否应仅用于样式和脚本目的?
提前致谢!
编辑:特别是,可以避免将此属性与“text”的输入字段一起使用。类型(当没有样式或脚本目的时)?
编辑2:因此,您几乎已经确认了我的想法:“名称”属性将在进一步的HTML规范/标准中弃用!!! ???它仍然是“活着的”只有用于向后兼容
...在某些情况下可以避免,但仍有一些情况(例如单选按钮)需要它!
解决方案
name
属性是通过非DOM Javascript引用网页范围内的特定元素的符号:
document.forms['your_form'].elements['aa']
元素的 id
属性需要设置相同的值才能使以下工作:
document.getElementById('aa')
我的理解是,当Netscape创建Javascript时,它使用 name
属性。然而,HTML规范决定使用 id
,但保留 name
以实现向后兼容性。 IME,使用 name
属性是Internet Explorer 6支持所必需的,因为IE中的javascript引擎无法读取 id
属性 - 只有 name
虽然两者都已定义。
...可以避免使用带有“text”输入字段的此属性。类型(当没有样式或脚本目的时)?
如果你没有附加到文本字段的任何javascript,是的 - 它们是不必要的。
其他提示
我想你会发现几乎每个网站都会有name属性的输入。我不认为它会很快消失。
name属性指定名称 对于输入元素。
name属性用于标识 提交后的表单数据 到服务器,或参考表格 客户端上使用JavaScript的数据 侧。
注意:仅表单具有名称的元素 属性将具有其值 提交表格时通过。
id和name属性之间存在差异。 id适用于HTML文档中的任何元素,而名称仅与输入字段相关。标准要求id在页面中是唯一的(尽管不一定在所有网页中都遵循)。不同的元素可能有相同的名称。一个特殊的案例是单选按钮。所有单选按钮应具有相同的名称,并且所选单选按钮的值将返回到表单。因此,您可以看到该名称在HTML表单处理中仍具有重要意义。
我见过自动HTML表单生成系统(如 zope.formlib ), id和name属性都是为不同类型的输入窗口小部件自动生成的。这种自动表单生成系统适当地关注与id和name属性的差异相关联的所有细微差别。它们还可以为每个复选框元素生成隐藏的输入元素。因此,只要有可能,我会尝试使用某种自动HTML表单生成机制,并让它处理所涉及的问题。
这是一个老问题,但值得注意的是,许多现代JS框架都依赖于 name
属性。特别是,jQuery的 serialize
功能:
要使表单元素的值包含在序列化字符串中,该元素必须具有name属性。
如果有的话, name
似乎正在卷土重来。
值得注意的是, name
属性很有用,因为它具有更多的“范围”。比 id
。 id
在页面中必须是唯一的,但可以多次使用相同的 name
。这使得当您在同一页面上有多个表单时,或者当您想要引用一组复选框等时,它会很有用。
IIRC旧浏览器使用名称代替ID,这就是它通常包含的原因。