2012-08-29 158 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(結果);