返回知识库

界面与交互 · 操作与输入

字段标签Label

用持久可见、与控件程序关联的 label 说明字段用途,并把帮助和错误文字一并绑到同一个控件。

换三种标注,看字段卡和读屏读数怎么变

同一个邮箱字段,标注方式不同,可访问性、可发现性和错误定位完全不同。先把字段卡少掉什么看清楚,再解释为什么。

场景:同一个报名表的「邮箱地址」字段,换三种标注方式。观察字段卡本身少掉什么、读屏读数怎么变、错误能不能定位到字段。

用于接收报名确认,不公开展示。

可访问名邮箱地址输入后说明仍在(label 持久)错误定位未校验点 label 可聚焦是(点 label 可聚焦)

对照:遮住底部反馈也能看出结果——字段卡有持久 label;读屏读数四列随之变化;校验后错误物件带字段名。当前焦点不在输入框

对照:同一个邮箱字段,换不同标注方式,看字段卡、读屏读数和错误物件怎么变。原因:label 持久可见且程序关联,placeholder 一输入就消失。下一步:先切换三种方式,再点「跑一次校验」。

给字段加 label 时要盯这些

实验台证明的是机制;真正写字段时,用这五条检查边界。

  1. label 持久可见,不靠 placeholderplaceholder 在用户输入后立刻消失;只有持久可见的 label 才能持续回答「这里该填什么」。
  2. label 要和控件程序关联用 <label for> 包住 id,或用 aria-labelledby;这样点 label 能聚焦控件,读屏也能把名字读给字段。
  3. 错误要能定位到字段错误文字用 aria-describedby 关联到控件,并在文案里带上字段名;没有 label 的字段,报错也读不出是谁出错。
  4. 必填不能只靠星号或颜色星号对读屏不可靠,颜色对色盲不可靠;用「必填」这样的文字写进 label 或说明里。
  5. placeholder 只给示例格式placeholder 是「name@example.com」这样的示例,不是字段名称;把它当字段名用,输入后字段就没了名字。

什么时候必须给 label,什么时候能省

判断的依据是「没有它,用户和读屏还能不能稳定知道字段用途」。

必须任何要采集数据的输入控件

文本框、邮箱、密码、日期、选择器:只要用户要填,就要有持久可见且程序关联的 label。

必须必填或带校验的字段

必填规则和错误信息都要能归属到字段;没有 label,错误就读不出是谁出错,用户无法定位。

可省 label搜索框等自带明确语境的字段

导航栏的搜索框有放大镜图标和独立的提交按钮,语境已经说明用途,可用 aria-label 代替可见 label。

不建议只用 placeholder 充当字段名

输入后说明消失、读屏可访问名变空、错误无法归属;这是字段标注最常见的可访问性事故。

怎么用:从关联到错误的最短路径

让 label、帮助文字、错误文字都和同一个控件绑死。

  1. 给 input 一个稳定的 id,写 <label for="该 id">,把字段名放进去;必填用「必填」二字标注。
  2. 帮助文字(用途、格式要求)放在字段附近,用 aria-describedby 关联到控件。
  3. placeholder 只放示例格式(如 name@example.com),不放字段名称。
  4. 校验失败时,错误文字带字段名,并用 aria-describedby 关联给控件、aria-invalid 标记控件。
  5. 读屏从头到尾走一遍:进字段能听到名字、用途、是否必填,出错能听到是哪个字段、怎么改。

正反例:同一个邮箱字段,只改标注方式

目标都是采集邮箱。差别只在「字段名是不是持久可见且程序关联的 label」。

正例上方有 label for 关联,错误带字段名

字段上方持久可见「邮箱地址 必填」,帮助文字解释用途;校验失败时错误读作「邮箱地址:请输入完整邮箱」。输入后字段名仍在,读屏和错误都能稳定归属。

这样标
反例只用 placeholder 当字段名

没有 label,字段名只写在 placeholder 里;用户一开始输入,placeholder 消失,字段既没了名字、也没了说明。校验报错时读屏只读「编辑框 请输入完整邮箱」,用户不知是哪个字段出错。

别这么省

快速自测

一个密码框只在 placeholder 里写了「请输入密码」,没有可见 label。用户输入后最直接的问题是什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。