2012-08-29 179 views
5

我很难让Twitter Bootstrap的Typeahead正常工作。 Typeahead只匹配输入的第一个字母。我在预输入框结果看起来像Bootstrap Typeahead只显示第一个字母

n 
n 
n 
N 
N 
n. 

我的代码是

<%= text_field_tag :search, params[:search], "data-provide" => "typeahead", "data-source" => '["USA", "Canada","Mexico"]' %> 

谁能帮助?

回答

2

我只是试过你的代码,它为我工作。当我改变了引号是这样的,虽然,我得到你所遇到的问题:

"['USA', 'Canada','Mexico']" 

我也陷入了类似的问题,这是不是您的问题略有不同,但它可能会帮助别人。发生在我身上的是我传递给键入的JSON被解释为一个字符数组。所以,如果我通过:

["USA", "Canada","Mexico"] 

它将它解释为26个字符的数组,因此结果typeahead给我是单个字符。

在我的情况,这是因为我正在做一个ajax调用,我没有设置dataType为'json'。在你的情况下,这不是问题,但希望这可以让你朝着解决方案迈进!

6

的人谁使用源功能(即Ajax调用服务器)时,得到这样的问题:代替

process(JSON.parse(data)); 

使用

process(data); 
7

检查在HTML中为数据源属性输出的引号组合。我遇到了以下代码片段中的相同问题。

<input type="text" name="test" id="test" class="span2" data-provide="typeahead" 
data-items="4" data-source="['thisone','another','zzzz']"> 

更改为以下,这是我在其他例子中所看到的,并没有解决它

data-source="["thisone","another","zzzz"]" 

但切换到属性值围绕单引号和双引号可搜索内容修复。 这个作品

data-source='["thisone","another","zzzz"]' 
+0

不错。第一个选项(data-source =“[”thisone“,”another“,”zzzz“]”)为我做了诀窍。谢谢。 – darksoulsong

1
var data = ""; 
$.ajax({ 
     url: 'ajax/getdirverandpass.php', 
     success: function (result) { 
      data = JSON.parse(result); 
     }, 
     async: false 
}); 

$("#nav-search-input").typeahead({source: data, updater: function (a) { 
      $("#nav-search-input").focus(); 
      return a 
}}); 

请使用此 JSON.parse(结果);