文章目录

在知识库里输入“zhoubao”,按回车想把拼音确认成“周报”,页面却已经开始搜索;搜索建议刚出现,用户又被方向键同时切换两层候选的行为弄得不知所措。这类问题不是搜索框不够醒目,而是输入法、建议列表和正式提交同时抢走了同一次按键。

中文搜索建议的关键,是先让用户完成组字,再让他决定是否采用建议,最后执行搜索。可以在 Pixso 的交互原型工作流中把这三个时刻分开画出来:每次按键由谁处理、输入框留下什么、下一步进入哪里,都需要有明确答案。

中文搜索从拼音候选确认到应用建议选择,两次确认承担不同动作

输入法候选和搜索建议先分清楚

以团队知识库为例,用户希望找到“周报模板”。输入拼音时,系统输入法可能显示“周报、周宝”等候选;文字确认后,知识库才展示“周报模板、周报填写规范、团队周报归档”等应用建议。前者帮助把按键变成文字,后者帮助把文字变成查询或目标,两层不能用一套选择规则。

设计说明要先给建议列表定性:它是补全查询词,还是直接打开某篇文档?本例选择补全查询词,因此点击“周报模板”后把完整词放回输入框,并按明确约定执行搜索。若产品改为直接跳转文档,就应在建议项中加入文档标题、类型或所属空间,让用户看得出这是一个目标,不是待输入的词。

同一列表可以区分建议词和文档结果,但必须标明分组与动作,不要让外观完全相同的两行分别执行“填入”和“打开”。如果产品暂时无法清楚解释这两类操作,先保留一种行为比拼成一张功能丰富却不可预测的浮层更合适。

还在组字时,不把临时拼音当作最终查询

输入“zhoubao”的过程会经过多个临时组合值。如果每个值都立即提交,读者可能看到一连串与中文意图无关的结果,还会误以为找不到资料。较稳妥的默认做法是:组合输入进行时不执行正式搜索,不让应用建议的方向键导航干扰输入法选词;文字确认后再按产品的建议触发规则处理当前值。

研发可以参考 MDN 的组合输入状态说明识别输入过程,但设计稿不需要指定一段未经验证的通用代码。它要交付的是行为约束:选字使用的回车不能同时跳转结果页;候选选择不能把输入光标带出字段;组合过程中按退格仍由正常文字编辑处理。

还要覆盖取消组字。compositionend 的定义包含完成或取消组合输入,所以收到“组字结束”不等于一定得到一个新的查询。用户取消后若文字没有改变,就不应凭空生成一条搜索记录,更不能把已经关闭的旧建议重新展开。

页面存在历史建议时,可以在开始组字后暂时收起旧列表,避免它盖住输入法候选或冒充当前结果。是否在确认文字后立即出现建议,应结合知识库查询成本与输入节奏决定;不要把某个固定毫秒数当作所有产品都适用的体验标准。

同一个回车,在三个阶段承担不同动作

对这个知识库,建议采用手动选择:显示建议时不替用户自动选中第一项。用户可以继续编辑“周报”,也可以用方向键明确选中“周报模板”。这样,回车执行的是已经表达的意图,不会把仅仅“看见了一条建议”当作同意使用它。

当前阶段回车应该做什么不能顺带发生什么
输入法正在选字由输入法完成当前候选确认立即跳到搜索结果页
文字已确认,未主动选中建议提交输入框中的查询“周报”偷偷替换成第一条“周报模板”
用户明确选中建议“周报模板”接受该建议,并按约定搜索同时再提交一次旧词“周报”

方向键的规则也要跟随阶段。组字期间不要抢占输入法的候选导航;进入应用建议后,上下键移动当前建议,输入光标与文本编辑仍应保持可用。建议浮层关闭后,左右键、Home、End、选择文字与退格都应该恢复正常编辑,不能因为有一个搜索下拉框就重写整套输入习惯。

W3C 的组合框模式提供了可编辑字段与建议列表的键盘约定。设计团队应选定适合本产品的行为,再与实际组件实现对照,而不是只在设计稿旁写一句“支持键盘”。Escape 收起应用建议时,本例保留已经输入的文字;不要同时清空查询,迫使用户重新打字。

无建议、请求失败和无搜索结果不是一回事

用户输入了团队内部的简称,建议列表可能找不到匹配,但全文搜索仍然能找到正文内容。因此“暂无建议”不应使搜索按钮失效;可以关闭浮层,保留直接搜索当前词的能力。建议服务出错时也不要把它包装成“没有相关资料”,否则用户会对库存产生错误判断。

正式提交后才进入结果页的“没有找到文档”。这个状态应显示实际使用的查询词,并提供清除筛选或修改关键词的路径。如果仍处于某个空间或时间筛选中,应让限制可见,不要引导用户一遍遍换词却不知道范围被缩小了。

建议请求还有先后顺序:搜索“周报”后又输入“周报模板”,较晚返回的旧建议不能覆盖新词。可以沿用异步结果与当前输入保持一致的方法,但搜索界面要额外规定已选中建议是否仍属于当前列表。列表整体刷新后,不应让原来的第三行索引误选中另一个词。

对于支持搜索历史的产品,只在约定的提交时机记录,不记录每个拼音片段或只是浏览过的建议。清除历史属于历史数据操作,收起浮层属于界面操作,两者文案和入口不要混为一谈。

移动端还要检查输入法键盘出现后的剩余高度。建议列表可以在可用区域内滚动,但搜索框和当前查询不要被挤出视野;输入法的候选条也不属于应用可以任意覆盖的空间。点选建议时,应先完成约定的选中动作,不能因为输入框失焦就抢先移除列表,导致用户明明点中了却没有任何结果。点到列表外则可以收起建议,同时保留输入文字;再次聚焦后是否恢复建议,按当前查询重新判断。

把两个回车拆成连续的原型状态

在 Pixso 画布里并排整理知识库的三个页面状态:拼音组字、已确认“周报”并展开建议、接受“周报模板”后的结果页。保持搜索位置与周边导航一致,只改变本次动作真正影响的部分。先让评审者说出每一步当前由谁接管输入,再讨论建议列表应该长什么样。

Pixso 画布中知识库搜索的组字、建议选择与结果页面三种状态
输入法选词与应用建议分层表达,回车只执行当前阶段对应的动作。

再补上两个小分支:取消组字返回原文字;建议暂不可用但仍能直接搜索。原型连线和说明帮助团队讨论路径;实现后,在目标设备上使用真实输入法验证事件顺序、浏览器差异与读屏行为,特别检查候选确认之后焦点仍然留在搜索字段。

评审时按完整动作演练:输入拼音并用回车选字,确认没有提前跳页;输入已确认汉字后直接搜索,确认没有被第一条建议替换;通过键盘选择建议,再返回修改;取消组字、快速删词、切换输入法后继续。只要“我现在是在写字还是在搜索”始终清楚,这个看似简单的输入框就有了可靠的行为基础。