TypeError:f [c]在向bootstrap标签输入元素添加标签时

时间:2014-11-11 06:58:40

标签: javascript jquery html twitter-bootstrap

我有2个输入元素,其中一个我写了一些字母,自动完成函数从db中获取数据并得到结果,一旦我选择了一个结果,我想将它作为标记添加到另一个输入元素中。

$('@ID("#input_to")').autocomplete({
        source: function (request, response) {
            jQuery.post('@Html.Raw(Url.Action("LoadAutocomplete", "Correspondence", new
            {
                                                                                        Area = "Correspondence"
        }))',
                request, response);
        },
        minLength: 3,
        select: function (event, ui) {
            try {
                var elt = $('@ID("#input_tags_test")').tagsinput('input');

                elt.tagsinput({
                    itemValue: 'id',
                    itemText: 'text'
                });

                elt.tagsinput('add', { id: ui.item.id, text: ui.item.value });

                console.log(elt.tagsinput('items'));
            } catch (err) {
                console.log(err);
            }
            jQuery('@ID("#input_to")').val(ui.item.id);
        }
    });

这是html代码

<input type="text" id="@ID("input_tags_test")" class="form-control bootstrap-tagsinput" data-role="tagsinput">               
            <input type="text" id="@ID("input_to")" class="form-control" name="recipientsName" placeholder="Search for someone...">

它仅在第一次工作..第二次抛出异常

  

TypeError:f [c]不是函数   ...字元素)卸下摆臂(); b.itemsArray.length大于0;)b.itemsArray.pop(); b.pushVal(),... b.options

1 个答案:

答案 0 :(得分:0)

我发现了如何修复它,我不应该定义tagsinput('input')两次..我是javascript和web开发的新手,我认为在C#中数据成员(在这种情况下为elt)将是在函数执行完毕后会被销毁并且析构函数会被调用,但显然这不是这里的情况,因此添加一个简单的null检查if语句是否解决了问题。

 if (elt == null) {
                    elt = $('@ID("#input_tags_test")').tagsinput('input');

                    elt.tagsinput({
                        itemValue: 'id',
                        itemText: 'text'
                    });
                }

然后幸福地过去;)

this question helped me figure it out