我正在尝试实现jquery.mentions,以便在系统中输入@符号时向用户提供建议。
使用Ajax查询填充列表后,一切都运行正常。
然而,对于编辑现有的评论,我正在努力。
我已将默认文本设置为先前生成的有效值,但它不能正确显示。
呈现的值是
@[Peter Jones](contact:200)它显示为Peter Jones
如果我将其设置为默认文本,它将显示为@Peter Jones (显示@符号)
这是一个bug吗?有没有人有办法?
我的代码如下
$(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));
});
}) ;
});
发布于 2017-07-04 06:22:44
我查看了jquery.mentionsinput并调整了resetInput函数。
在设置newMentionText时,我删除了@符号的Match1元素。
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();
}使用多个标签进行了测试,所有工作正常。
https://stackoverflow.com/questions/44894358
复制相似问题