2012-08-29 13 views
5

Sto attraversando un periodo difficile per il funzionamento di Typeahead di Twitter Bootstrap. Typeahead corrisponde solo alla prima lettera di un input. I miei risultati nella casella typeahead simile aBootstrap Typeahead che visualizza solo la prima lettera

n 
n 
n 
N 
N 
n. 

mio codice è

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

Chiunque può aiutare?

risposta

2

Ho appena provato il codice e ha funzionato per me. Quando ho cambiato le virgolette per essere come questo, però, mi è stato sempre il problema riscontrato:

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

stavo correndo in un problema simile, è leggermente diverso da quello il problema, ma potrebbe aiutare gli altri. Quello che mi stava succedendo è che il JSON che stavo passando a typeahead veniva interpretato come un array di caratteri. Quindi, se ho passato in:

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

Sarebbe interpretarlo come un array di 26 caratteri, quindi il risultato è stato typeahead dando me erano singoli caratteri.

Nel mio caso, era perché stavo facendo una chiamata ajax e non ho impostato il dataType su 'json'. Nel tuo caso non è questo il problema, ma spero che questo ti metta in cammino verso una soluzione!

6

Per chi sta facendo questo problema quando si utilizza una funzione di sorgente (cioè ajax chiamata al server):

uso:

process(JSON.parse(data)); 

invece di:

process(data); 
7

Controllare la combinazione di virgolette che vengono visualizzate nel tuo html per l'attributo data-source. Stavo avendo lo stesso problema con il seguente snippet di codice.

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

passaggio al seguito, che ho visto in altri esempi, non risolvere il problema

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

ma il passaggio alle singole citazioni intorno al valore di attributo e doppi apici per gli elementi ricercabili aggiustato. Questo funziona.

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

Bello. La prima opzione (data-source = "[" thisone "," another "," zzzz "]") ha fatto il trucco per me. Grazie. – 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 
}}); 

si prega di utilizzare questo JSON.parse (risultato);

Problemi correlati