E3.06.3multi-select select-all and clear设计
全选与清空需要独立入口
别名: 全选 · 清空选择 · select all clear
概念解释
多选下拉里,「把当前集合全勾上」和「一个都不留」是集合级操作,不能靠用户去点每一项来完成,也不能藏进某一条普通选项里。独立入口(dedicated select-all / clear)指在列表上方或触发器旁提供明确的全选和清空,且这两步不与某个数据项抢同一行。没有它们,上百项的选择要么做不完,要么靠连续点选引入漏网。
独立不等于危险操作被美化:全选的范围必须说清是「当前过滤结果」还是「整个数据集」。
机制
逐项勾选的时间随集合线性增长,错误率也随集合增长。人在重复勾选中会跳行、会忘记已经到过哪,于是「我想全选」变成一次不可靠的手工扫描。清空同样:逐个点掉已选标签,中途容易停在「好像清完了」。集合级动作把 N 次指向收成一次,前提是这个动作的范围被理解。
若把「全选」做成列表里的第一项数据,它会进入排序、搜索和滚动,时而看不见,时而被当成一个叫「全选」的真实对象。过滤后勾全选,范围默默从全集缩成命中集,用户却仍按全集来想后果。范围歧义比没有按钮更危险,因为它看起来已经提供了捷径。
边界
选项只有四五个时,全选入口的收益很小,甚至会压过逐项的清晰性;可以省略全选,但仍建议保留清空,因为清空的对手是已选集合而不是选项总数。权限或只读项不能被全选扫进去:入口要么跳过不可选项并说清跳过了几个,要么在存在不可选时禁用全选。清空不可撤销时(立即生效的授权),入口要按破坏性动作处理,而不是做成和全选对称的小字。树形多选的全选是另一套父子联动,不能把扁平列表的全选按钮直接套到树上。
怎么落地
- 在列表顶部固定全选和清空,不让它们滚出视野,也不要把它们写进选项数据。
- 全选文案带范围:「全选 128 项」或「全选当前搜索结果」,数字与真实作用集一致。
- 清空只清选择,不删选项本身;若有不可逆后果,分开确认。
- 验证:过滤出一个真子集,按全选,再看被写入的 ID 列表是子集还是全集。再按清空,触发器应回到空占位。范围或残留任一出错,入口就没有独立完成集合操作。