2012-12-11 56 views
3

我正在使用jQuery插件Tag-It來處理自動建議和標記。我正在使用正在工作的Ajax呼叫獲取數據。發送ID但顯示標籤

目前數據正在返回的格式如下:

{"itemID":"ItemName"} 

例如:

{"1":"Yellow","2":"Green"} 

這是怎麼回事罰款。

我想要做的是對返回標記用戶點擊,並有存儲在隱藏字段像這樣的數據:

<input type="hidden" name="tag['itemID']['itemName']"/> 

似乎不是我能想出如何做它,有沒有人有這方面的經驗,並能指出我在正確的方向?

+0

該解決方案的工作示例當你說該數據是由阿賈克斯返回,你的意思是你正在使用的自動完成功能來獲取標籤可添加列表? – Liam

回答

3

爲此,需要將從自動完成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; 
      } 
     }, 

處理Tag-it的afterTagAdded事件。在這裏,可以實現任何修改剛剛添加的標籤的自定義行爲。

 afterTagAdded: function(event, ui) { 
      if (itemId) { 
       $(ui.tag).find('input') 
        .attr('name', "tag[\'" + itemId+ "']['" + ui.tagLabel + "']"); 
       itemId = null; 
      } 
     } 
    }); 
} 

看到http://jsfiddle.net/DCJsj/

+0

完美!感謝您的提示。現在管理得到這個工作。 – Amo