2017-07-03 115 views
0

我正在嘗試實現jquery.mentions,用於在輸入@符號時佔據系統中的用戶。jquery.mention默認文本

所有工作正常,Ajax查詢被用來填充列表。

但是,爲了編輯現有的評論,我正在掙扎。

我已將默認文本設置爲之前生成的有效值,但無法正確顯示。

呈現的值是

@[Peter Jones](contact:200) 

作爲彼得瓊斯

如果我設置爲默認的文本,它被顯示爲@Peter瓊斯(表示@符號)

,其顯示這是一個錯誤?有人有修復嗎?

我的代碼如下

$(function() { 

    $('textarea.mention').mentionsInput({ 
     defaultValue : '@[Peter Jones](contact:200)', 
     onDataRequest:function (mode, query, callback) { 
      $.getJSON('Ajax/GetUserTags.php', function(responseData) { 
      responseData = _.filter(responseData, function(item) { return item.name.toLowerCase().indexOf(query.toLowerCase()) > -1 }); 
      callback.call(this, responseData); 
      }); 
     } 
    }); 

    $('.get-syntax-text').click(function() { 
     $('textarea.mention').mentionsInput('val', function(text) { 
     alert(text); 
     }); 
    }); 

    $('.get-mentions').click(function() { 
     $('textarea.mention').mentionsInput('getMentions', function(data) { 
     alert(JSON.stringify(data)); 
     }); 
    }) ; 


    }); 

回答

1

我在jquery.mentionsinput望去,調整resetInput功能。

設置newMentionText時,我刪除了作爲@符號的Match [1]元素。

function resetInput(currentVal) { 
     mentionsCollection = []; 
     var mentionText = utils.htmlEncode(currentVal); 
     var regex = new RegExp("(" + settings.triggerChar + ")\\[(.*?)\\]\\((.*?):(.*?)\\)", "gi"); 
     var match, newMentionText = mentionText; 
     while ((match = regex.exec(mentionText)) != null) { 
      //alert(match[0] + "\n" + match[1] + "\n" + match[2]); 
      //newMentionText = newMentionText.replace(match[0], match[1] + match[2]); 
      newMentionText = newMentionText.replace(match[0], match[2]); 
      mentionsCollection.push({ 'id': match[4], 'type': match[3], 'value': match[2], 'trigger': match[1] }); 
     } 
     elmInputBox.val(newMentionText); 
     updateValues(); 
    } 

使用多個標籤進行測試,所有工作正常。

+0

這是非常有益的,謝謝! –