SC 3.2.2 级别 A WCAG 2.0
输入时
更改任何用户界面组件的设置,不得自动触发上下文变化,除非已事先告知用户。选择某个值不应在用户不知情的情况下导致页面导航、表单提交或页面重排。
成功准则的要求
更改控件的设置——在 <select> 中选择选项、勾选复选框、选择单选按钮、编辑文本字段——不得在用户不知情的情况下触发重大上下文变化。若输入确实需要触发此类变化,页面必须在用户接触该控件之前发出警告,使行为具有可预测性。
允许的次要效果(显示依赖字段、更新预览)是可以接受的;被禁止的是无通知的导航、表单提交、新窗口弹出或页面整体重排。
如何满足该准则
- 在用户选择值之后,使用单独的”提交”或”应用”按钮,而非在值变更时自动提交。
- 对于语言/国家切换器,应提供警告(例如”选择语言将重新加载页面”)或要求用户点击”前往”按钮。
- 对于实时更新结果的筛选界面,若结果以内联方式显示,是可以接受的——但若 URL 发生变化或用户被跳转至其他位置,则视为上下文变化。
- 流畅地展示依赖字段,并进行适当的焦点管理。
- 若确实必须自动提交,应在控件附近的说明文字或字段的无障碍描述中提前告知。
常见失败情形
- 国家/语言
<select>元素在值变更时立即导航至不同 URL。 - 筛选复选框在每次更改时无警告地重新加载页面,并将用户滚动回顶部。
- 日期选择器在用户选定日期的瞬间提交外层表单。
- 管理面板中的拨动开关触发破坏性操作(删除、发布)而无需确认。
为何重要
屏幕阅读器和键盘用户在提交之前往往会先探索表单控件——展开下拉菜单以阅读选项、用 Tab 遍历单选按钮以比较标签。若选择某个值后页面静默提交或导航,用户将失去当前位置和已输入的数据。该准则保护用户自主权:由用户而非页面决定何时提交。