使用“名称”是否多余?现代Web开发中输入字段的属性?

StackOverflow https://stackoverflow.com/questions/1813085

  •  06-07-2019
  •  | 
  •  

我注意到很多网站的表单都包含“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,这就是它通常包含的原因。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top