2012-10-11 77 views
4

我使用的是twitter bootstrap 2.0.4。我想用ajax填充下拉列表。 typeahead插件的源屬性要求源的值爲數組 或函數。我試圖在ajax請求後更改數組的值,但它只顯示第一個請求的結果。如何在twitter引導中更改typeahead的源屬性?

<form class="navbar-search"> 
    <input type="text" id="searchSong" class="typeahead" placeholder="Search"> 
</form> 

$('.typeahead').keyup(function(){      
       var list; 
       var q = $('.typeahead').val(); 
       if(!q){ 
        return; 
       } 
       $.ajax({ 
        type: "GET", 
        url: "/WebApplication1/Playlist/search?query="+q, 
        success: function(data){ 
         list = data.split(','); 
         alert(list); 
         $('.typeahead').typeahead({ 
          source: list 
         }) 
        } 
       }); 

警告框顯示來自AJAX加載的數據是正確的,但下拉仍然顯示以前的值

回答

1

我不認爲該版本支持預輸入填充與阿賈克斯外的開箱。有插件的版本,但是,它支持它。

Here's one。我不記得這是否與我使用的是相同的,但如果是這樣,它的效果非常好。我會確定並更新這個答案。

更新:

Here is a question你應該看看。所選答案中給出的這個extension是我使用的答案。

+0

感謝suggestions..it幫助了很多 –

3

如果插件已被使用,則無法重新初始化該插件。

嘗試更新已經開始工作的預輸入:Live demo (jsfiddle)

var typeahead = $('.typeahead').data('typeahead'); 
if(typeahead) typeahead.source = list; 
else $('.typeahead').typeahead({source: list}); 

Plugin code responsible (github)

+0

thanks..will看看它... –

+0

這不起作用,它返回'm越來越無法設置屬性'來源'undefined –

+0

@ daniel.sedlacek正如你可以在演示中看到的,它適用於v2。您可能正在使用Bootstrap v3:如果是這樣,typeahead插件已被刪除,並支持[typeahead.js](https://github.com/twitter/typeahead.js) – Sherbrow

-2

很多吃這個

$.get('/my_url/' + some_params, function(data){ 
    $("#address-field").typeahead().data().typeahead.source = data 
    },'json'); 
+3

您應該在答案中提供更多詳細信息。這可能是正確的答案,但請引出它。 Thansk。 –

+0

也是行不通的。 – Renan

相關問題