【发布时间】:2019-01-09 09:42:44
【问题描述】:
在我当前的项目中,我们永久禁用了表单控件。在这些情况下,表单元素将替换为服务器端的 span 元素。
创建这样的代码:
<label for="foo">Foo</label>
<span id="foo">Bar</span>
问题 1:label 元素没有任何关联的表单元素(input、select、textarea)是否可以接受?
问题 2:如果是,在这种情况下我们是否必须删除 for 属性(因为它引用了一个不是表单元素的元素)?
规范说:
可以指定for属性来指示与标题关联的表单控件。如果指定了属性,则属性的值必须是与标签元素在同一文档中的可标记表单关联元素的 ID。
https://www.w3.org/TR/2011/WD-html5-author-20110705/the-label-element.html
补充说明:在上面的引用中,可标记的表单相关元素到底是什么?
【问题讨论】:
-
HTML 规范没有强制将标签与控件关联起来,但 Web 内容可访问性指南 (WCAG) 2.0 可以。这在技术文档 H44 中有所描述:使用标签元素将文本标签与表单控件相关联,这也解释了隐式关联(通过嵌套,例如标签内的输入)不像通过 for 和 id 属性的显式关联那样被广泛支持: w3.org/TR/WCAG20-TECHS/H44.html
-
stackoverflow.com/a/33214122/4826740 是您正在寻找的。 TLDR 你正在做的事情会起作用,但可能没有遵循可访问性指南
-
你为什么要用 span 替换表单控件,而不是仅仅使用 disabled 属性?
标签: html