jquery.mention默认文本
问题描述:
我正在尝试实现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));
});
}) ;
});
答
我在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();
}
使用多个标签进行测试,所有工作正常。
这是非常有益的,谢谢! –