我有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
答案 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'
});
}
然后幸福地过去;)