2012-10-11 32 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

相关问题