- 原文地址:Rules for Autocomplete
- 原文做者:Jeremy
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:fireairforce
- 校对者:Fengziyin1234, Endone
使用已知值去进行自动补全文本彷佛是一个很容易解决的问题,可是不少不少的界面设计都错了。我常常看到这样的错误,与其逐一抱怨,我决定写下一些它们常常违背的规则。html
可能这些规则中的某些并非最好的,可是打破这些规则应该须要一个很好的理由(例如,若是所填的值都必须来自一个固定集合,那么就没必要遵照其中的一些规则,例如美国的州列表)。遵循这些规则至少能有不错的体验:前端
精确匹配老是第一位的。若是用户准确输入一个选项,则其余选项必须始终低于用户输入内容的选项。android
除了精确匹配以外,最早被考虑的应该是前缀匹配。若是我输入 “Fr”,我想要的是 “Fresno”,而不是 “San Francisco”。ios
在前缀匹配以后,再进行字符串匹配。从子字符串开始匹配基本上都是错误的,由于用户开始输入单词时是在开头而不是在中间的某个地方。git
若是没有子字符串匹配,则能够选择回退到子序列匹配。这仅仅在某些状况下有用。github
若是没有子序列/子字符串匹配,则能够选择回退到近似匹配。这种状况通常不多不多出现。后端
匹配应该按照字典序进行排序。函数
当一个选项是另外一个选项的前缀时,把最短的选项放在最前面。post
匹配应该不分大小写,除非有两个选项只是大小写不一样。在这种状况下,选择和用户输入最匹配的。区块链
使用选择的操做(例如搜索术语)必须与接受第一个建议的操做不一样,除非你必须先进行一些操做来开始使用自动补全的建议(例如,按向下箭头)。用户永远须要采起额外步骤来使用自动补全。
若是有当前自动补全选项,tab 键应该始终接受这个选项(不管是在下拉菜单中突出显示,仍是在行内显示)。
若是自动补全选项是突出显示的,那么按 Enter 键应该始终使用该选项。即便有一部分页面尚未彻底加载,它也永远不应恢复为默认选项。若是某些内容还在加载,最好忽略 Enter 按键而不是选择错误的选项。
当使用自动补全的字段没有被聚焦时,自动补全不会被按键激活。
通常状况下,结果应该在 100 毫秒内呈现出来。
当用户快速输入其余字母时,能够暂停自动补全,可是不要在用户输入补全以后显示这一串字母中间的结果。最好等待更长的时间而后更改一次结果,而不是显示看上去完成实际上尚未完成的结果(我认可这条规则至关主观)。
若是某个选项被突出显示,那就永远不要更改它,即便加载了新数据也是如此。
有些可选功能在某些确切类型的自动补全中有意义,而在其余类型则未必如此。我确信对这些功能,会有比我所给出的更正确的名称。
当我聚焦输入框可是尚未输入任何内容时,显示我以前使用的选项。
自动补全到最近的模糊前缀。若是我输入 “g” 而且匹配 “Google” 和 “GoodReads”,那么这个操做将填入两个 “o”,而后容许我输入 “g” 或 “d” 来选择我想要的选项。
多部分匹配。这对于自动补全文件路径颇有用,我能够输入 “e/b/a” 来自动补全 “env/bin/activate”。ZSH
作得很好。
递归匹配。因为自动补全有时做为快速浏览选项的一种方式有双重用途,因此有时你但愿从一个普遍的过滤器开始,而后在这些结果中进行搜索。例如,若是我输入 “.pdf” 来查看全部的pdf文件,那么我就能够按某个键(也许是逗号)开始在这些结果中搜索,即便我如今输入的内容实际上已经在我以前输入的文件名中出现过。
拼写纠正。这每每在搜索引擎中颇有用。
别名。尝试自动补全用户名时,能够容许此人的姓/名自动补全他的用户名。对于表示完整状态的州的缩写也是如此。
结果中的其余信息。若是你是自动补全函数名称,那么若是可以看到它们的参数列表,用户会很高兴。
上下文感知建议。这在自动补全代码或单词(一般在移动电话上)时很是有用,其中上下文能够预测所须要的结果多是什么。
接受自动补全建议后,能够返回我输入的内容。(使用向上箭头来进行这个操做是一个比较好的方法)。
若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。