向引导程序标记输入元素添加标记时发生类型错误:f[c]

TypeError:f[c] when adding a tag to bootstrap tags input element

本文关键字:错误 类型 引导程序 输入 元素 加标记 添加      更新时间:2023-09-26

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

$('@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]不是函数…lement).remove();b.items数组长度>0;)b.itemsArray.pop();b.pushVal(),b.选项…

我发现了如何修复它,我不应该定义tagsinput('input')两次。。我是javascript和web开发的新手,我认为在C#中,数据成员(本例中为elt)将被销毁,函数执行完成后将调用析构函数,但显然这里不是这样,所以添加一个简单的null check-if语句解决了问题。

 if (elt == null) {
                    elt = $('@ID("#input_tags_test")').tagsinput('input');
                    elt.tagsinput({
                        itemValue: 'id',
                        itemText: 'text'
                    });
                }

从此幸福快乐;)

这个问题帮助我弄清楚了

相关文章: