提交后输入框边框变红,视觉上能看出有问题,读屏用户只听到一句提交完成,哪个字段错了、错在哪里、改成什么样都没有方向。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

<label for='tel'>手机号</label>
<input id='tel' aria-invalid='true'
       aria-describedby='tel-err'>
<p id='tel-err' role='alert'>请填 11 位手机号</p>

错误文案只写在样式或者占位符里,没有独立文本节点,也没用 aria-invalid 和 aria-describedby 跟输入框绑定,读屏读不到,用户只能靠肉眼一个个找红框,错误原因更是看不到。这一点先确认清楚,后面就不用反复试。

「表单报错读屏提示」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

具体做法是,在输入框下方留一块专门放错误文案的区域,默认内容为空;给输入框标上无效状态,再用描述属性指向下面那块文案;提交失败时把焦点移到第一个出错的字段,并说明错在哪里。

改完照着核一遍,关掉显示器用读屏走一遍,每条错误都能被念出来,还知道对的是哪个字段。

作者 9823189