输入字段可以有两个标签吗?

asl*_*lum 121 html forms labels

玛丽有一个小小的形状,它的字段就是这样标记的.
每当一个错误悄悄进入时,它就会产生混乱.

我为每个输入字段都有一个标签......相当标准的事情.验证表单后,我在表单顶部显示一个有用的小段落,详细说明哪些信息丢失或不正确.

我可以为同一个输入字段设置两个标签吗?一个是正​​确的形式,还有一个在验证提醒文本中?我有什么理由不这样做吗?

Jam*_*ers 142

我假设这个问题是关于HTML表单的.从规格:

LABEL元素可用于将信息附加到控件.每个LABEL元素只与一个表单控件相关联.

因此,每个表单控件可以由多个标签引用,但每个标签只能引用一个控件.因此,如果有一个控件的第二个标签是有意义的(在你描述的情况下,确实如此)可以随意添加第二个标签.

  • 我们都应该只使用有效的代码,否则事情可能会在将来或为其他人或某些 JS 库或其他任何东西中断。 (3认同)
  • @AvramLavinsky不,这是"一个字段有两个标签吗?"的正确答案.规范很清楚.客户如何选择解释这一点取决于他们.您链接到"aria-labeledby"的"aria-describedby"链接是"修复"破碎的屏幕阅读器的方法. (3认同)
  • 它实际上更像是一个可用性/可访问性问题,而不是HTML.HTML工作. (2认同)
  • 正确答案是罗布的。此解决方案适用于有视力的用户,但在某些屏幕阅读器中失败。Aslum,猜测您在 Rob 提交答案之前接受了 jsummers 的上述答案。 (2认同)

Rob*_*lan 35

HTML是合法的,它是有效的(点击任何标签会将焦点转移到相关字段).

出于可访问性原因,这样做有点棘手.

这不是一种"常见"方法,因此至少有一个常见的屏幕阅读器(我用NVDA测试过)只有在将焦点移到字段时才会读取第一个标签 - 它会忽略同一字段的任何其他标签.

因此,如果您的错误消息位于页面顶部,那么通过字段选择的盲人或弱视用户只会在登陆相关字段时听到错误消息,而不是旁边的"真实"标签.

因此 - 如果你正确地说出错误信息,这可能是一件好事(当然比仅用红色突出显示非验证字段更好!).

  • 这是正确的,正确的编码方法是通过 [aria-描述的属性](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describeby_attribute) (4认同)

Ger*_*der 25

是的,您可以在同一个表单控件中指向多个标签.这是完全合法的:

<label for="fname">First name</label>
<label for="fname">Enter your info</label>
<label for="fname">Why not a third label</label>
<input type="text" id="fname" name="fname">
Run Code Online (Sandbox Code Playgroud)

这只是一个例子......通常你会用一个标签包裹这些行,因为它们很接近.

  • +1指向doc的链接,它明确指出"多个`LABEL`可以通过`for`属性创建多个引用来关联同一个控件." (12认同)