一个输入域可以有两个标签吗?

玛丽有一个小的形式,它的领域在那里标记如此。
每当一个错误悄悄出现,就会造成混乱

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

同一个输入域可以有两个标签吗?一个在正确的表单中,一个在验证提醒文本中?我有什么理由不这么做吗?

57486 次浏览

我假设这个问题是关于 HTML 表单的:

LABEL 元素可用于将信息附加到控件。每个 LABEL 元素恰好与一个窗体控件相关联。

因此,每个窗体控件可由多个标签引用,但每个标签只能引用一个控件。因此,如果为控件添加第二个标签是有意义的(在您描述的情况下确实如此) ,那么您可以随意添加第二个标签。

是的,可以有多个标签指向同一个表单控件。这是 完全合法:

<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">

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

HTML 是合法的,它可以工作(单击任何标签都会将焦点转移到相关字段)。

由于可访问性的原因,做正确的事情有点棘手。

这不是一种“常见”的方法,因为至少有一种常见的屏幕阅读器(我用 NVDA 测试过)只在你将焦点转移到字段时读取第一个标签——它忽略同一字段的任何其他标签。

因此,如果您的错误消息在页面的顶部,盲人或低视力的用户通过字段选项卡将只听到错误消息时登陆的问题领域,而不是“真正的”标签旁边。

因此——如果正确地表达错误消息,这可能是一件好事(当然比只突出显示红色的非验证字段要好!).