Bootstrap标签输入自动完成功能不起作用

时间:2014-04-28 07:21:04

标签: jquery asp.net-mvc json linq twitter-bootstrap

<script type="text/javascript">

$(function () {
    $('#input-tagautocomplete').tagsinput({
        typeahead: {
            source: function (term, process) {
                items = [];
                map = {};
                var url = "@Url.Content("~/video/Getchannel/")";
                return $.getJSON(url, { term: term }, function (data) {
                    $.each(data, function (i, item) {
                        map[item.Ch_Name] = item;
                        items.push(item.Ch_Name);

                    });
                    return (items);
                });
            },
            updater: function (item) {
                var selected = map[item].Id;
                alert(selected);
                $('#tag-value').val(selected);
                return item;
            }
        }
    });
});

我有这个包含ajax请求的脚本来获取数组源。

然后在自动完成中传递这些值。

我想尝试这样的事情 -

http://jsfiddle.net/Palapas/WtC27/1/

注意 - 当JSON类型的请求被发送到方法时,它返回给我一个数组结果,因为它应该是自动完成的。

public JsonResult Getchannel(string term)
{
    var genes = (from u in tp.Channels
                 where u.Ch_Name.Contains(term)
                 select u).ToArray();
    var result = genes.Select(m => new { Ch_Name = m.Ch_Name, Id = m.Id });

    return new JsonResult()
               {
                   Data = result,
                   JsonRequestBehavior = JsonRequestBehavior.AllowGet
               };
}

此方法返回Ch_NameId的数组。

然后我只在输入的显示字段中选择名称,并在选择时保存其ID。

但我不能完成这项自动完成工作。

我在这里缺少什么?我想我的一切都很好。

以下是来自方法

的数据快照

enter image description here

1 个答案:

答案 0 :(得分:-1)

没有&#39;更新程序&#39; typeahead参数的属性。

但是,您可以使用$('#input-tagautocomplete').val()来获取包含逗号分隔的标记列表的字符串。请参阅this page以获取参考。