提前输入.js以在查找建议时忽略括号

get typeahead.js to ignore parenthesis when finding suggestions

本文关键字:查找 输入 js      更新时间:2023-09-26

我正在使用typeahead.js提供建议。 除了一个问题外,它运行良好。 我的建议有括号,如下所示:

"Elizabeth (Liz)"
"Robert (Bob)"
"Michael (Mike)"

typeahead.js 只匹配单词的开头,因此如果用户键入"Liz",它不会建议第一项。如果您键入"(Liz",它将匹配。 但用户应该能够开始键入名称或昵称以查看匹配的建议。

如何提前输入.js忽略括号并在两个单词中查找匹配项?

JSFIDDLE的工作示例:https://jsfiddle.net/laurakurup/mru39nk2/

重要说明:我不希望 typeahead.js 在字符串中的任何位置查找匹配项。 我知道这会解决它,但是当有成千上万的建议时,这将没有帮助。 例如,键入"Beth"表示"Bethany",而不是"Elizabeth"。 我需要保留此功能。 除括号外,建议应仅与每个单词的开头匹配。

感谢您的帮助。

如果将基准分词器更改为:

datumTokenizer: Bloodhound.tokenizers.nonword

预测将以相同的方式在单词的开头执行,但不包括符号,而不仅仅是拆分空格。

然后你会得到伊莱的建议和丽莎白(丽兹)的建议。

您可以使用Bloodhound.tokenizers.nonword分词器作为datumTokenizer

在内部,它使用此表达式split(/'W+/)该表达式将按不属于单词的任何字符拆分刺痛。例如符号和空格。

这是JS小提琴js Fiddle的链接

(可选)您可能希望实现自己的分词器以按空格和括号进行拆分。