我使用jquery Tokeninput库实现自动完成功能。我目前正在努力解决搜索结果存在的问题。当我键入内容时,它将返回所有正在键入字符的单词。我希望它只返回初始字符串匹配的搜索结果。
例如,如果我键入“ Na”,它将返回所有具有“ Na ”的单词,例如“ Ca na da”,“ Fi na ncial”等。
我只希望它返回以“ Na ”开头的单词,例如“ Na tion”,“ Na scar”等等
我不熟悉JavaScript,因此无法更新此脚本。有人可以帮忙吗?
这是我正在使用的库-https://github.com/loopj/jquery-tokeninput/blob/master/src/jquery.tokeninput.js
$("#demo-input").tokenInput([
{id: 7, name: "Canada"},
{id: 11, name: "Financial "},
{id: 13, name: "Nation"},
{id: 17, name: "Nascar"},
{id: 19, name: "USA"},
{id: 31, name: "Economics"}
]);
答案 0 :(得分:0)
我检查了库代码,但我认为您不能通过任何选项来更改默认搜索类型,该选项将检查值中是否存在搜索查询。但是,我发现了一个可以使用的技巧(IMO 除非有必要,否则就不要)。
工作示例here
通过库,您可以使用onResult
和onCachedResult
回调来处理搜索结果,可以将其用于杠杆。
$("#demo-input").tokenInput([
{id: 7, name: "Canada"},
{id: 11, name: "Financial "},
{id: 13, name: "Nation"},
{id: 17, name: "Nascar"},
{id: 19, name: "USA"},
{id: 31, name: "Economics"}
],
{
onResult: filterSearchResults,
onCachedResult: filterSearchResults
});
function filterSearchResults(items){
var query = $("#demo-input").parent().find("ul li input").val().toLowerCase();
return items.filter(i => i.name.toLowerCase().startsWith(query));
}