级联选择器的难点在于层级之间有依赖:上一级变化会改变下一级的候选项,加载慢或没有结果时还要让用户知道下一步。设计原型时,先把“省—市—区”的数据关系、清空规则和回显规则写清楚,再处理下拉框样式。
以收货地址为例,用户选择浙江省、杭州市、西湖区。可以在墨刀设计中整理级联选择器的层级状态与回显页面,并用原型连线验证变化后的路径。

先决定每一级变化会影响什么
级联并不是三个独立下拉框。省份改变后,城市候选项应重新加载;城市改变后,区县候选项也要更新。已经选中的下级值如果不再属于新父级,应立即从提交值中清空;如需帮助用户找回旧选择,可另以“原地址”只读提示保留,不能把失效值继续当作有效选择。
| 状态 | 界面表达 | 数据处理约定 |
|---|---|---|
| 未选择 | 显示省、市、区占位文案 | 没有下级请求 |
| 省已选,城市加载中 | 保留省名,城市显示加载状态 | 暂不允许提交不完整地址 |
| 城市无结果 | 说明当前省份暂无可选城市 | 提供更换省份或联系支持的动作 |
| 已有地址回显 | 依次展示浙江省/杭州市/西湖区 | 回显前确认每级编码属于父级 |
| 父级被修改 | 清空失效下级并解释原因 | 重新请求城市和区县列表 |
先区分“暂无子级”与“当前层级就是可选终点”。有些业务允许选到城市,有些必须选到区县,不能用同一条“无结果”处理。字段表增加“是否末级”和“是否可提交”,页面据此显示确认动作或继续选择提示。
为加载和无结果留出空间
不要只画“有数据”的下拉面板。至少制作父级已选、子级加载、子级无结果和加载失败四种状态。加载中要保留上下文,例如“正在加载浙江省的城市”,而不是让面板空白;无结果应说明是当前父级没有选项,失败则提供重试。
如果下拉列表很长,可以增加搜索输入,但不要把级联选择器偷换成普通搜索下拉。搜索结果仍应显示所属层级,选中后回填完整路径,用户才能检查是不是选错了同名地区。

编辑场景比首次选择更容易暴露问题
用一条已有订单作为样本:地址为浙江省/杭州市/西湖区。进入编辑页时先显示完整路径;用户把省份改为江苏省,城市和区县不能继续显示杭州和西湖区,直到新候选加载完毕。
- 打开已有订单,检查三级值按层级顺序回显。
- 修改省份,观察城市和区县是否被清空或标记为待重新选择。
- 城市列表加载中时,确认保存按钮不会提交半成品地址。
- 选择南京市后,加载区县;如果无结果,显示原因和替换省市入口。
- 最终保存前,在摘要中显示江苏省/南京市/具体区县完整路径。
回显按稳定标识和父子关系匹配;同名地区同时显示上级路径,避免仅凭名称误选。
清空与快速切换时,保持选择值一致
很多级联问题不是下拉面板,而是摘要和保存结果不一致。把“江苏省/南京市/玄武区”作为唯一选中路径,页面摘要、编辑回显和确认页都引用同一组名称与标识。用户点击清空城市时,同时清空区县,并把保存按钮恢复为不可提交或提示缺少城市;不能留下看似完整、实际无效的旧区县。
快速切换父级时,晚回来的结果不能覆盖当前选择
评审增加一条任务:选浙江省后立即切到江苏省,让浙江城市列表晚一步返回。此时页面仍应显示江苏省的加载或结果;旧请求不能把杭州市塞进当前列表。原型用两个返回顺序表达结果,交付时要求研发按父级标识核对响应,测试同时检查加载提示、候选列表和保存值。
同名地区仍显示完整上级路径,搜索结果不能只展示末级名称。搜索选中后,要同步省、市、区的显示与稳定标识。
提交失败时不要把已选路径替换成空白表单。保留省、市、区的显示值,并在对应层级提示重试或重新选择。这样用户能判断是网络问题还是数据失效,研发也能据此决定是否重取父级候选。
移动端的键盘与触摸顺序
在窄屏中,连续三个下拉框容易让用户失去上下文。每次选择后把已选路径放在标题或摘要里,列表打开时仍能看见当前父级。触摸区域、返回和清空操作应在视觉上分开,不能让点击清除误触发下一层。
若使用搜索,输入法弹出后列表仍需保留搜索词和父级标签;无结果时不要只留下空白。将这些状态放进原型分支覆盖记录,团队能在同一任务下检查加载、失败和返回。
交付字段和评审标准
- 每级字段:显示名、稳定标识、父级标识、排序和是否可选。
- 状态:未选、加载中、加载失败、无结果、已选、父级变更后待重选。
- 回显:编辑入口、完整路径、同名项区分方式。
- 验收:改变父级不保留失效子级;异常状态有原因和下一步;保存摘要与选择值一致。
评审任务可以是:“编辑浙江省/杭州市/西湖区订单,把省份改为江苏省并选择南京市,处理一次加载失败,再确认完整地址。”记录每一步是否知道下一步,不要只截图下拉面板。需要更完整的页面状态说明时,可参考原型标注教程。