2013-03-27 95 views
1

使用此插件 https://github.com/aehlke/tag-it 其非常酷的順便。標記它提交的編號沒有標記或標記

問題:

 <input type="hidden" name="tags" id="mySingleField" value="Apple, Orange" disabled="true"> 
     Tags:<br> 
     <ul id="mytags"></ul> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#mytags").tagit({ 
      singleField: true, 
      singleFieldNode: $('#mySingleField'), 
      allowSpaces: true, 
      minLength: 2, 
      removeConfirmation: true, 
      tagSource: function (request, response) { 
       //console.log("1"); 
       $.ajax({ 
        url: "../City/GetList", 
        data: { term: request.term }, 
        dataType: "json", 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { 
           label: item.label + " (" + item.id + ")", 
           value: item.value 
          } 
         })); 
        } 
       }); 
      } 
     }); 
    }); 



</script> 

當標籤它選擇它增加值,以CSV格式隱藏字段在值ATTR的值。我想讓它做ID,而不是任何人知道如何?

+0

我可以問你爲什麼要去做 – 2013-03-27 03:52:31

+0

我想通過ID而不是值返回到服務器 – 2013-03-27 03:59:54

+0

[#線提供的插件238(https://github.com/aehlke/tag -it/blob/master/js/tag-it.js#L283)是值被設置的地方,如果有幫助的話。 – couzzi 2013-03-27 04:00:00

回答

0
change the tag-it.js file 
comment from line 264 

         //that.createTag(that._cleanedInput()); 

         // The autocomplete doesn't close automatically when TAB is pressed. 
         // So let's ensure that it closes. 
         //that.tagInput.autocomplete('close'); 

around line 285 

       var autocompleteOptions = { 
        select: function(event, ui) { 
    that.createTag(ui.item);       

Create a new function 
assignedTagsData : function(){ 
     // Only to be used when singleField option is not seletced 
     var tags = []; 

     this.tagList.children('.tagit-choice').each(function() { 
       tags.push($(this).data('tag_item_data')); 
      }); 
     return tags; 

    } 



> that.createTag(ui.item); 



    // Create tag. 
     var tag = $('<li></li>') 
      .data('tag_item_data',item) //add this line 
      .addClass('tagit-choice ui-widget-content ui-state-default ui-corner-all') 
      .addClass(additionalClass) 
      .append(label); 
1

這裏有幾件事。

$("#mytags").tagit({ 
    ... 
    singleFieldDelimiter: '_', 
    ... 

然後,你可以修改標籤it.js文件上線197說使用ID屬性:您可以通過設置參數這樣說下劃線設置分隔符,而不是一個CSV的任何東西。

變化:

var tags = node.val().split(this.options.singleFieldDelimiter); 

var tags = node.attr("id").split(this.options.singleFieldDelimiter); 

所以我們說,你修改的隱藏字段是:

<input type="hidden" name="tags" class="mySingleField" id="Apple_Orange_Banana" value="Apple_Orange" disabled="true"> 

你會修改JavaScript這樣得到期望的輸出:

$(document).ready(function() { 
     $("#mytags").tagit({ 
      singleField: true, 
      singleFieldNode: $('.mySingleField'), 
      singleFieldDelimiter: '_', 
      allowSpaces: true, 
      minLength: 2, 
      removeConfirmation: true, 
      tagSource: function (request, response) { 
       //console.log("1"); 
       $.ajax({ 
        url: "../City/GetList", 
        data: { term: request.term }, 
        dataType: "json", 
        success: function (data) { 
         response($.map(data, function (item) { 
          return { 
           label: item.label + " (" + item.id + ")", 
           value: item.value 
          } 
         })); 
        } 
       }); 
      } 
     }); 
    }); 
+0

如果我有具有(id,label,value)的項目,是否進行此更改從選擇標記項目中選擇id並將其設置爲Input元素中的值字段,或者是否從所選項目標記中選擇值並將其添加到輸入idattr?我想要第一個 – 2013-03-27 04:17:17

+0

這將標記ID的值併爲由下劃線分隔的每個值製作一個標記。這是你想要做的嗎? – 2013-03-27 04:20:41

+0

我在找的是如果我的標籤是(id,lable,values)(1,蘋果,蘋果)我想看看。在顯示的標籤上,我想看到值蘋果....目前它沒有並且顯示蘋果.. – 2013-03-27 04:23:00