jquery.mention 默认文本

jquery.mention Default Text

我正在尝试实施 jquery.mentions 以在输入 @ 符号时向系统中的用户发出提示。

一切正常,使用 Ajax 查询填充列表。

但是,为了编辑现有的评论,我很费力。

我已将默认文本设置为之前生成的有效值,但显示不正确。

呈现的值为

@[Peter Jones](contact:200)

显示为 Peter Jones

如果我将其设置为默认文本,它将显示为@Peter Jones(显示@符号)

这是一个错误吗?有人有解决办法吗?

我的代码如下

$(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));
      });
    }) ;


  });

我查看了 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();
    }

使用多个标签进行测试,一切正常。