首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery检查字符串是否已从文本区域中删除,并从select中删除选项

jquery检查字符串是否已从文本区域中删除,并从select中删除选项
EN

Stack Overflow用户
提问于 2016-01-09 13:03:42
回答 2查看 283关注 0票数 0

嗨,我正在使用jquery检测将@符号插入到文本区域中。当检测到这种情况时,会向服务器激发ajax请求,以检索用户列表。然后,用户单击用户名,它将按如下方式附加到文本区域,并添加到select中,以便我可以将本说明通知相关用户;

代码语言:javascript
运行
复制
$(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,这个选项值就在选项列表中,但它不应该是。有人知道是否以及如何检查用户名是否已被删除并从选项组中删除吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-09 13:32:41

您可以尝试这种方法,添加按键事件,每次检查每个用户是否在textarea中:

代码语言:javascript
运行
复制
$('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
EN

Stack Overflow用户

发布于 2016-01-09 13:33:21

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34693783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档