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;
}
},
afterTagAdded
Tag-itのイベントを処理します。ここでは、追加したばかりのタグを変更するカスタム動作を実装できます。
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/で、このソリューションの実例を参照してください。