在不修改 Tag-it 的情况下执行此操作的关键是弥合从自动完成 Ajax 调用返回的额外数据与 Tag-it afterTagAdded 事件之间的差距。
将变量itemData 添加到作用域中,该变量将用于存储来自自动完成项的附加数据:
{
var itemData;
获取标签元素的引用,以便调用创建标签行为
var theTags = $('#tags');
theTags.tagit({
处理自动完成的select事件并存储来自所选自动完成项的附加数据,然后创建标签。
autocomplete: {
source: [
{value:'User Tag',data:{id: 1, type: 'userTag'}},
{value:'System Tag',data:{id: 2, type: 'systemTag'}}
],
select: function(event,ui) {
itemData = ui.item.data;
theTags.tagit("createTag", ui.item.value);
return false;
}
},
为 Tag-it 处理 afterTagAdded 事件。在这里可以实现修改刚刚添加的标签的任何自定义行为。
afterTagAdded: function(event, ui) {
if (itemData) {
$(ui.tag).data('type', itemData); // store all data
$(ui.tag).find('input').val(itemData.id); // use a bit of the data
itemData = null;
}
}
});
}
在http://jsfiddle.net/yuhxL/2/查看此解决方案的工作示例