【问题标题】:Jquery TokenInput Initial Strings SearchJquery TokenInput 初始字符串搜索
【发布时间】:2019-01-21 15:33:47
【问题描述】:

我使用 jquery Tokeninput 库来实现自动完成功能。我目前正在努力解决我在搜索结果中遇到的问题。当我输入某些内容时,它会返回正在输入的字符的所有单词。我希望它只返回初始字符串匹配的搜索结果。

例如,如果我输入“Na”,它会返回所有带有“Na”的单词,例如“Canada”、“Fi nancial”等。

我只希望它返回以“Na”开头的单词,例如“Nation”、“Nascar”等等。

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

【问题讨论】:

    标签: javascript jquery-tokeninput


    【解决方案1】:

    我检查了库代码,但我认为您不能传递任何选项来更改默认搜索类型,该类型会检查值中是否存在搜索查询。但是,我发现了一个您可以使用的方法(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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2017-05-12
      相关资源
      最近更新 更多