2013-01-01 26 views
4

我想兩個不同的文本輸入有預輸入,每一個不同的信號源功能。爲了舉例,我們得到first_names和其他last_names。兩個引導typeaheads兩種不同的源功能

下面是它的外觀和它不工作:

$('#first_name').typeahead({ 
    source: function (query, process) { 
     $.get('/users/typeahead-first-name', { term: query }, function (data) { 
      return process(JSON.parse(data)); 
     }); 
    } 
}); 

$('#last_name').typeahead({ 
    source: function (query, process) { 
     $.get('/users/typeahead-last-name', { term: query }, function (data) { 
      return process(JSON.parse(data)); 
     }); 
    } 
}); 

第一預輸入工作正常。然而,第二個,當我開始打字和選項開始出現時,然後我點擊一個選項,下拉菜單關閉,沒有值插入輸入字段。

任何人有任何想法如何讓它工作?

+0

什麼不行? ANy在瀏覽器控制檯中記錄錯誤? –

+0

您是否使用Web檢查器(F12)檢查了Ajax調用的響應? – Sherbrow

+0

究竟是什麼不起作用:每個輸入都會正確加載來自服務器的數據。但是,從建議的結果中選擇所需的行並將其值放入輸入字段中將僅適用於第一個。 – shaharsol

回答

3

這可能是一個有點晚來幫助你,但我有同樣的問題在我自己的應用程序。解決的辦法是增加「名」的屬性,如:

$('#first_name').typeahead({ 
    name: 'first_name', 
    source: function (query, process) { 
     $.get('/users/typeahead-first-name', { term: query }, function (data) { 
      return process(JSON.parse(data)); 
     }); 
    } 
}); 

$('#last_name').typeahead({ 
    name: 'last_name', 
    source: function (query, process) { 
     $.get('/users/typeahead-last-name', { term: query }, function (data) { 
      return process(JSON.parse(data)); 
     }); 
    } 
}); 

它沒有問題,我叫他們在我的代碼,只要它們是不同的。它也有一定意義,因爲typeahead保留了緩存的響應。 (雖然我本以爲他們只是將緩存綁定到綁定它的實例上,但是......)

+0

爲遲到的迴應歡呼! +1 – Sablefoste