jQuery TokenInput初始字符串搜索

时间:2018-08-14 17:48:01

标签: javascript jquery-tokeninput

我使用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"}
]);

1 个答案:

答案 0 :(得分:0)

我检查了库代码,但我认为您不能通过任何选项来更改默认搜索类型,该选项将检查值中是否存在搜索查询。但是,我发现了一个可以使用的技巧(IMO 除非有必要,否则就不要)。

工作示例here

通过库,您可以使用onResultonCachedResult回调来处理搜索结果,可以将其用于杠杆。

$("#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));
}