2014-03-31 31 views
0

我从静止引导Twitter的预输入显示不是每一个项目

我的问题得到一个JSON(与页面标题+网址)的下拉列表仅显示项目,其中包括我搜索的单词(比如我搜索“google” ,我的休息让我用,例如“google”一个JSON和“g-mail”,但下拉列表只显示“google”)

当我alert()比赛,变量i得到如“google”和“g-mail”(所以JSON是正确的!)

$(function(){ 

    var obj = {}; 
    var matches = []; 

    $(".typeahead").typeahead({ 
     source: function (str, c) { 


      $.ajax({ 
       url:'http://QUERYURL' + str +'EXAMPLE', 

       dataType: 'json', 
       cache: false, 
       success: function(data){ 

        obj = {}; 
        matches = []; 

        _.each(data.results, function(item){ 
         matches.push(item.title); 
         obj[ item.title ] = "https:/"+item.url; 
        }); 

        c(matches); 
       } 
      }); 
     }, 
     updater: function (selectedName) { 

      url = obj[ selectedName ]; 
      window.open(url); 
      return selectedName; 
     } 
    }); 
}); 

回答

0

据我的理解,预输入只会告诉你,在匹配输入的字符,你的源JSON项目。

也就是说,如果你键入"g-"我想它只会显示你"g-mail"而不是"google"

也就是说这个预输入是如何工作的。

您应该检索一次所有可能的条目,并让该打印头与该源列表一起工作,而不是每次都可能获取子集?

+0

确定这是有道理的...有一个简单的方法来显示JSON的所有结果?当我使用http://twitter.github.io/typeahead.js时,我得到了显示每个结果(但我得到不同的问题,所以我切换到bootstrap) – sibe94

+0

我不确定你为什么要使用typeahead显示结果与用户输入的内容不符,这就是他们所做的。 – Starscream1984

0

使用匹配器。

的代码会像

matcher: function (item) { 
       return true; 
      }