使用typeahead.js搜索字符串中的内容?

3
我希望typeahead.js的匹配方式能像jqueryui自动完成一样。使用jqueryui自动完成,可以在文本项内进行搜索,而在typeahead中只能从字符串开头开始搜索。
自动完成示例:http://goo.gl/O43afF Typeahead示例:http://twitter.github.io/typeahead.js/examples/ 在自动完成中,似乎可以分配比较函数,但我在typeahead中没有找到类似的内容。
如果我的列表中包含“马术(马)”这个项目,那么当我输入“o”时,我希望能够匹配成功。
2个回答

2
Typeahead.js代码默认会寻找前缀匹配,正如你所说。但是有一个“技巧”:每个数据项还可以包含一个 tokens 元素,正如Typeahead文档所述,“它是一组字符串,帮助typeahead.js匹配给定查询的数据项”。前缀匹配是针对 tokens 进行的。如果您没有为其中一个数据项提供 tokens 值,则其值会为您标记化(以空格分隔)。但是,您可以提供 tokens 来获得所需结果。例如,在您的情况下,您将提供一个 tokens 值,该值是查询字符串中所有单词的所有唯一子字符串。顺便建议使用“长度>=2的所有唯一子字符串”。

0

typeahead的数据源是通过“source”参数设置的。因此,在那里放置另一种方法而不是数组是完全可以的。还要注意,它在内部期望一个字符串数组,因此您必须将所有内容格式化为字符串。

查看此示例fiddle

编辑:此示例现在始终生成从Test 0到Test 9的值,因此您当然只能通过输入“test”的部分来检查


OP 特别询问 typeahead.js,而不是 Bootstrap Typeahead。您在 fiddle 中演示的是 Bootstrap Typeahead,而 OP 已经说它的行为符合期望。 - Nitzan Shaked
该链接不存在,出现了404错误。 - Srinath Ganesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接