4

我正在使用 twitter 引导程序 2.0.4。我想使用 ajax 填充下拉列表。typeahead 插件的 source 属性要求 source 的值是数组或函数。我尝试在 ajax 请求之后更改数组的值,但它只显示第一个请求的结果。

<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 加载的数据是正确的,但下拉菜单仍显示以前的值

4

4 回答 4

3

如果插件已在使用中,则无法重新初始化它。

尝试更新已经在工作的 typeahead :现场演示(jsfiddle)

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

插件代码负责(github)

于 2012-10-11T18:52:08.203 回答
1

我认为该版本不支持使用开箱即用的 ajax 填充 typeahead。但是,有一些版本的插件确实支持它。

这是一个。我不记得这是否与我正在使用的相同,但如果是,则效果很好。我会确定并更新这个答案。

更新:

这是你应该看看的一个问题。所选答案中给出的扩展名是我使用的扩展名。

于 2012-10-11T14:47:10.433 回答
0

这在这里有一个答案。

更新或更改预输入数据

这样做的方法是使用 BloodHound 作为来源。无论数据是远程的还是本地的,这是我发现动态更新源的唯一方法。

上面的语法都不适合我,但这可能是因为我的打字头搜索使用了多个来源。

于 2018-05-10T14:10:22.963 回答
-3

吃这个

  $.get('/my_url/' + some_params, function(data){
    $("#address-field").typeahead().data().typeahead.source = data
  },'json');
于 2014-06-06T08:21:36.267 回答