更新此 问题已在 github 中讨论过
我在引导程序 3 中使用带有 typeahead 的 tagsinput。我遇到的问题是如果用户选择现有标签的值。显示文本显示正确,但 .val() 返回其实际对象。下面是代码
$('#tags').tagsinput({
//itemValue: 'value',
typeahead: {
source: function (query) {
//tags = [];
//map = {};
return $.getJSON('VirtualRoomService.asmx/GetTags?pid=' + $("#<%=hdnPID.ClientID%>").val() + '&tok=' + query)
//, function (data) {
// $.each(data, function (i, tag) {
// map[tag.TagValue] = tag;
// tags.push(tag.TagValue);
// });
// return process(tags);
//});
}
}
//freeElementSelector: "#freeTexts"
});
当用户选择现有标签时会发生这种情况。新标签没有问题。我尝试设置标签输入的 itemValue 和 itemText 但没有奏效。因此,我决定解决这个问题。因为我可以将 json 字符串作为 ['IRDAI", Object],如果可以以某种方式解析这些对象并获得实际的标签值,那么我会得到我正在查看的代码的预期结果。
下面是它在标签输入中显示为 [object Object] 的内容,用于用户从自动填充下拉列表中选择的文本 [![输入 imt 如果我将 TagId 和 TagValue 指定为 itemValue 和 itemText,如下代码所示
$('#tags').tagsinput({
itemValue: 'TagId',
itemText: 'TagValue',
typeahead: {
source: function (query) {
//tags = [];
//map = {};
return $.getJSON('VirtualRoomService.asmx/GetTags?pid=' + $("#<%=hdnPID.ClientID%>").val() + '&tok=' + query)
//, function (data) {
// $.each(data, function (i, tag) {
// //map[tag.TagValue] = tag;
// tags.push(tag.TagValue);
// });
//});
// return process(tags);
}
}
//freeElementSelector: "#freeTexts"
});
然后执行以下代码时结果显示如下
var arr = junit.Tags.split(',');
for (var i = 0; i < arr.length; i++) {
$('#tags').tagsinput('add', arr[i]);
}