H3.11.4specific field-level error announcement设计
播报内容需要具体到字段与原因,而非笼统提示有误
别名: 具体播报 · named field error · 笼统有误
概念解释
开口了还不够。若朗读只有「有错误」或「请检查表单」,人不知道去哪个字段、改什么。播报要落到字段名和原因,好让恢复在听觉通道上也能选路。视觉上的三要素若没进朗读字符串,对屏幕阅读器用户就不存在。这条管播报文本的粒度,不管何时开口。
机制
听觉通道是线性的,不能扫视页顶摘要再扫字段。一句「有误」只触发「某处失败」的警报,下一步仍要在所有字段上盲搜。把字段名和原因放进同一句(「电话号码需要区号」),工作记忆一次拿到目标和修法,焦点移动才有目的地。多处错误时,播报首条加总数,其余留在各自字段上被读到,而不是用一句「多处有误」把清单吞掉。笼统句还会让人以为是系统故障而重试提交,而不是去改输入。
边界
字段名必须是可见标签的那个词,不能是内部 input_3。原因只说到能行动的粒度,不要把堆栈读出来。语言切换后,播报要用当前语言的字段名,否则具体变成噪声。密码类原因不能具体到「少了一个特殊符号」若这会帮助猜测;但仍应指向「密码」这个字段。
怎么落地
- 状态消息或焦点所在字段的错误文本写成「标签 + 原因」,禁止单独的「出错了」。
- 多错误时首句包含数量并读出第一条的字段名,其余在字段被聚焦时再读。
- 检查可访问描述是否真的包含原因,而不是只在旁边另有一段视觉红字。
- 验证:只听首句播报,问「改哪一个、为什么」。答不出字段名或原因,粒度就还停留在笼统警报。