嗨,我正在使用jquery检测将@符号插入到文本区域中。当检测到这种情况时,会向服务器激发ajax请求,以检索用户列表。然后,用户单击用户名,它将按如下方式附加到文本区域,并添加到select中,以便我可以将本说明通知相关用户;
$(document).on('click', '#fetchUsers li',function(e){
var username = $( this ).text();
var user_id = $( this ).attr('data-user-id');
$('textarea.addNote').val(function(_, val){return val + username; });
$(this).parent('ul#fetchUsers').html('');
$('#addAUsertoNote')
.append($("<option></option>")
.attr("value",user_id)
.text(username));
});
现在我遇到的问题是,如果我从textarea中删除字符串@userone,这个选项值就在选项列表中,但它不应该是。有人知道是否以及如何检查用户名是否已被删除并从选项组中删除吗?
发布于 2016-01-09 13:32:41
您可以尝试这种方法,添加按键事件,每次检查每个用户是否在textarea中:
$('textarea.addNote').keydown(function() {
var self = $(this);
var note = self.val();
var users = $('#addAUsertoNote option').map(function() {
return $(this).text();
}).get();
users.forEach(function(user) {
if (!note.match("@" + user)) {
$('#addAUsertoNote option:contains(' + user + ')').remove();
}
});
});
发布于 2016-01-09 13:33:21
您的意思是从下一个用户列表中排除已经单击的用户名吗?
我将扩展检索列表的函数,以扫描textarea的内容以查找@\w+字符串,并禁用任何匹配的列表选项。
您还可以查看select:https://harvesthq.github.io/chosen/#optgroup-support提供的多选择菜单。
https://stackoverflow.com/questions/34693783
复制相似问题