2013-03-15 125 views
1

我正在使用tagit(http://webspirited.com/tagit/),並且非常喜歡它。我剛剛克服了一個障礙。 如果我開始輸入標籤關鍵字,改變我的想法,然後點擊頁面上的其他地方(所以輸入失去焦點),標籤被添加。我不希望發生這種情況。我希望標籤只在觸發鍵被選中時添加 - 在我的例子中是逗號。否則,最後一個標記(可能是部分文本)應該坐在那裏,直到添加逗號。tagit在點擊時添加標籤

這是我到目前爲止的代碼。很基本的實現,但我沒有看到一種方法來防止上面的情況。

$('#thename').tagit({ 
     tagSource:, 
     select:true, 
     tagsChanged:function (a, b) { 
     if(b=='added' || b=='popped'){ 
      submitForm(); 
     } 
     }, 
     triggerKeys:new Array('comma') 
    }); 
+0

是否允許任何文本被標記或只能選擇預先確定的標記? – tymeJV 2013-03-15 21:38:05

+0

嗨。在我目前的任務中,它只是我想要的源代碼中的預定義選項。但是我可能需要在未來添加額外的tagit實現,而不需要任何數據庫或數組查詢。 – iltdev 2013-03-15 23:00:50

回答

2

爲這個做了一點小事,我們將看看它是如何發生的。我不能在API中的任何地方發現不添加焦點出的標籤,所以我接下來的解決辦法是做到以下幾點:

型a標籤
-Click出輸入的(這樣的標籤被添加)
-Programatically獲取文本輸入和刪除標記

用下面的代碼嘗試這樣的:

$("#thename").focusout(function() { 
    //Get the input text 
    var tagText = $(this).val(); 

    //Verify input is NOT empty 

    //Remove the tag that was just added 
    $("#thename").tagit('removeTag', tagText); 

});

讓我知道這是如何工作的。

編輯:

剛剛注意到你的評論。如果您不想允許使用新標籤,請添加

allowNewTags: false, 

添加到原始代碼中的tagit標記中。

+0

非常感謝您的回答。我會在早上試試看,並回復你:) – iltdev 2013-03-15 23:02:03

+0

嗨tymeJV。不幸的是,重點代碼並不適合我。看着DOM,我把$(「thename」)改爲$(「#namename .tagit-input」),因爲#thename只是ul。這現在捕獲了文本,但仍然不起作用,因爲標籤在發佈焦點代碼之前被添加到選擇中,此時我的頁面已經開始重新加載。它是一個益智遊戲! – iltdev 2013-03-16 10:02:07

+0

你有沒有嘗試在你的tagit標記中添加allowNewTags:false?這應該禁止輸入未知標籤。 – tymeJV 2013-03-16 15:50:07

相關問題