为此,需要将从自动完成 Ajax 调用返回的额外数据传递给 Tag-it 标记事件。
将变量添加itemId
到范围,该变量将用于存储来自自动完成项的附加数据:
{
var itemId;
获取对标签元素的引用,以便可以调用创建标签行为
var theTags = $('#tags');
theTags.tagit({
处理select
自动完成事件并存储来自所选自动完成项的附加数据,然后创建标签。
autocomplete: {
source: [{id:1,value:'New 1'},{id:2,value:'New 2'}],
select: function(event,ui) {
itemId = ui.item.id;
theTags.tagit("createTag", ui.item.value);
return false;
}
},
处理afterTagAdded
Tag-it 的事件。在这里可以实现修改刚刚添加的标签的任何自定义行为。
afterTagAdded: function(event, ui) {
if (itemId) {
$(ui.tag).find('input')
.attr('name', "tag[\'" + itemId+ "']['" + ui.tagLabel + "']");
itemId = null;
}
}
});
}
在http://jsfiddle.net/DCJsj/上查看此解决方案的工作示例