jquery检查是否已从textarea中删除字符串并从select中删除选项

时间:2016-01-09 13:03:42

标签: javascript jquery

您好我正在使用jquery来检测插入到textarea中的@符号。检测到此情况时,会向服务器触发ajax请求以检索用户列表。然后,用户将点击用户名,它将被附加到textarea,如下所示,并且还添加到选择中,以便我可以通知相关用户此注释;

$(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,则此选项值在选项列表中,但不应该。有谁知道是否以及如何检查用户名是否已被删除并从选项组中删除?

2 个答案:

答案 0 :(得分:1)

您可以尝试这种方法,添加keydown事件,每次检查每个用户是否在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();
        }
    });
});

答案 1 :(得分:0)

您的意思是从下一个用户列表中排除已点击的用户名吗?

我会扩展检索列表的函数来扫描textarea的内容以获取@ \ w +字符串并禁用任何匹配的列表选项。

您还可以查看选择提供的多选菜单:https://harvesthq.github.io/chosen/#optgroup-support