如何防止bootstrap typeahead从ajax调用中双重过滤非匹配结果

时间:2013-05-23 17:47:28

标签: jquery twitter-bootstrap bootstrap-typeahead

我正在使用带有jQuery ajax的bootstrap typeahead,我们将其称为FILTER#1。在我的情况下,像“大坦克”或“大坦克”这样的ajax搜索都产生了“Great Tank”ajax结果,但是typeahead是第二次猜测我的结果并且双重滤除(我们将称为FILTER#2)第二个结果因为空间。我的ajax结果也可能与输入的结果完全不同。我需要先输入才能相信所提供的结果是有效的,并且无论确切的小写文本匹配如何都会显示它们。

我想要有以下行为:

  1. 如果结果中有匹配的单词,则突出显示
  2. 如果有一个不匹配的单词显示,它会突出显示,但会将其保留在结果列表中,而不是将其过滤掉。
  3. (1)工作OOTB,但(2)是我正在寻找的缺失功能。如果我不能有(1)和(2)我可以放弃(1)。

    这是一个小提琴示例:http://jsfiddle.net/PE9mN/

            $("#title2").typeahead({
            source: function( request, response ) {
                  var mockResults2 = ["Great Tank War", 
                                      "Great Train Robbery",
                                      "other random result my server produced"];
                response(mockResults2); 
                // I expect this to display both items regardless of $("#title2").val() 
                // In my case, the server was smart enough to realize that 
                // "greattank" may match "great tank"
                // and it even added a 3rd value that I want to display.
                }
               }); 
    

    感谢。

2 个答案:

答案 0 :(得分:11)

如果您将以下选项添加到typeahead:

  matcher: function(item) {
      return true;
  }

然后不会应用“第二次”过滤。

答案 1 :(得分:0)

您可以在初始化时执行此操作,如下所示

  //Typeahead autocomplete for address
    $('input.typeahead').typeahead({
        ajax: {
           .....
        },
        matcher: function () { return true; }
    });