键盘回车触发的默认按钮不应指向破坏性操作
别名: 默认按钮删除 · Enter 触发删除 · default button
概念解释
许多桌面框架里,回车激活的是对话框的默认按钮(default button),它不一定等于当前焦点。焦点可以在取消上,回车仍打在画了默认描边的那一枚——常常是「确定」。这枚被回车打中的键不应是删除、清空、不可逆提交。默认按钮是键盘的隐式瞄准,比焦点更不容易被看见,因为它可能只多一圈描边。
机制
默认按钮来自窗口系统:回车 = 接受这个对话框的主提议。它让表单在最后一个字段按回车就能提交,不必 Tab 到按钮。破坏性对话框若仍把删除设成默认,用户在读完之前、或焦点其实在别处时,回车就会执行删除。这和「焦点在删除上」是两条路:修了焦点却留着默认按钮,回车照样毁数据。习惯化在这里更强,因为回车在每个对话框里都「成功过」。视觉上默认描边若不够强,人不知道回车会打哪;若太强,又会把删除看起来像主推荐。正确做法是让默认按钮指向安全或建设性项,或在破坏性对话框里取消默认按钮,迫使一次显式点击或 Tab。
怎么研究
焦点在取消、默认按钮是删除,按回车。再做一组:无默认按钮,回车应无动作或只在焦点上激活。
自变量:默认按钮是哪一枚、是否与焦点分离、是否有默认描边。 因变量:回车是否删除、用户是否预期回车会打在焦点上、连续对话框后的失误。
只测 Tab 再空格,测的是焦点,测不到默认按钮。必须用回车,且焦点故意放在另一枚上。
边界
macOS 和 Windows 对「回车是否总是默认按钮」并不完全相同,有的控件回车只激活焦点。Web 上 <button type="submit"> 在表单里就是默认,即使焦点在输入框。单按钮对话框只能它是默认。命令行确认(y/N)把大写当默认,危险项应是小写且不是默认。
怎么落地
- 破坏性对话框不要设默认提交;回车不应删除。建设性表单的默认可以是保存。
- 若平台必须有一枚默认,把它设成取消,并画出默认描边,避免回车打在看不见的删除上。
- 检查 HTML 表单里哪一枚
type="submit"会吃回车,危险项用type="button"。 - 验证:焦点放在取消上按回车。对象被删,就是默认按钮指向了破坏性操作。