2016-10-10 38 views

回答

1

你可以使用tagit提供的afterTagAdded事件並移動你的代碼推動t他重視那裏的陣列。這樣,當真正加了標籤的代碼纔會執行​​:

代碼

// When the user clicks submit 
    $('form').submit(function(e) { 
    var inp = $('#tagInput').val(); 
    $('#tagInput').val(''); 
    $('#tags').tagit('createTag', inp); 
    sampleTags.push(inp); 
    e.preventDefault(); 
    }); 

刪除與行「sampleTags.push(INP);」

添加以下代碼以TAG-IT功能(見afterTagAdded事件):

// When the user clicks submit 
    $('#tags').tagit({ 
    availableTags: sampleTags, 
    tagLimit: 2, 
    afterTagRemoved: function(evt, ui) { 
     console.log(ui.tagLabel) 
     for(var i = 0; i < sampleTags.length; i++) { 
     if (sampleTags[i] == ui.tagLabel) { 
      sampleTags.splice(i, 1); 
     } 
     } 
    }, 
    afterTagAdded: function(evt, data){ 
     sampleTags.push(data.tagLabel); 
    } 
    }); 

看到這裏的工作例如:http://jsfiddle.net/uVxXg/142/

UPDATE:

要回答的評論。達到tagLimit時,使用「onTagLimitExceeded」提供反饋。工作示例這裏:http://jsfiddle.net/uVxXg/144/

afterTagAdded: function(evt, data){ 
     sampleTags.push(data.tagLabel); 
    }, 
    onTagLimitExceeded: function(evt, data){ 
     alert('Tag limit reached!'); 
    } 

您可以在這裏找到的標籤,它的GitHub頁面上的所有事件的列表:https://github.com/aehlke/tag-it/blob/master/README.markdown

+0

謝謝您的回答,一旦達到極限。我將如何顯示最大限制消息。這會在同一個地方嗎? – Garrett

+1

如果添加第三個標籤,則不會執行代碼。但是這種情況還有其他事件。查看更新的答案。 – TheNightmare

1

如果要您只需加一個你提交功能至極檢查變量sampleTags

$('form').submit(function(e) { 
    if(sampleTags.length < 2){ 
     var inp = $('#tagInput').val(); 
     $('#tagInput').val(''); 
     $('#tags').tagit('createTag', inp); 
     sampleTags.push(inp); 
    } 
    e.preventDefault(); 
    }); 

伊夫更新您的小提琴(http://jsfiddle.net/uVxXg/139/

我希望這個長度適合你:)