E3.11.1empty required when no safe default设计
无安全默认时应留空并强制选择
别名: 无默认值 · force choice · 强制选择
概念解释
当任何一个预选项都不能代表「用户尚未决定」或「对大多数人都无害」时,字段应保持空,并在提交时要求做出选择。无安全默认(no safe default)针对的是性别、医疗史、付款方式、数据删除范围这类一旦填错代价不对称的题。系统替用户点上第一项,看起来减少了一步,其实是把未决定写成了第一个选项的假同意。留空不是懒,是拒绝伪造一份态度。
强制选择发生在提交,不是一进页就把空标成错误。空在填写中是合法的未决。
机制
预选会利用默认偏差:人把已经亮着的项当成推荐或已经完成的题,注意力转向还空着的格子。若第一项恰好是名单排序的产物(字母序、接口返回序),偏差就被结构放大,与用户利益无关。提交时再拦空值,是把决策点放回用户仍在「完成这张表」的时刻,而不是放在扫描阶段被默认偷走。
安全默认存在时(时区可按定位猜、语言可按系统语言),预选是在省事。安全默认不存在时,同一套预选变成了静默代理。判别标准不是「有没有一个统计上最常见的值」,而是「把这个值安在未表态的人身上,最坏后果是否可接受」。最坏不可接受,就留空。
边界
开关类立即生效字段几乎总有一个当前系统状态,那是实然值不是默认策略;不要把「现在是关」理解成「我们替你选了关」。向导分步里,后一步依赖前一步的选择,前一步必须留下空并拦住「下一步」,否则后一步会在错误前提上展开。法律要求必须采集的字段仍可留空到提交,空与「拒绝回答」要分开放——后者是显式选项,前者是未决。辅助技术用户需要知道字段还空着;只靠视觉上的未选中圆点不够,组标签应说明必填且尚未选择。
怎么落地
- 列出每个选择字段的最坏误默认;不可接受的,初始为空,提交时在该组拦截。
- 不要用名单第一项、接口顺序或「看起来最顺」的项当占位默认。
- 空的报错出现在提交或离开该步时,不要在用户刚看到题目时就飘红。
- 验证:不点任何选项直接提交,应被挡在该字段;随便预装一个值再找人填,问「这一项是你选的吗」。许多人说「好像本来就那样」,默认就已经替他们表态了。