【问题标题】:Issues in javascript mention script in textareajavascript 中的问题在 textarea 中提及脚本
【发布时间】:2016-01-19 04:15:18
【问题描述】:

我试图在从 MySQL 数据库提供的文本区域上使用 (@) 实现提及。 这是我在下面使用的代码

   var start=/@/ig; // @ Match
                        var word=/@(\w+)/ig; //@abc Match

                        $("#newstatus").live("keyup",function()
                        {
                            var content=$(this).val() //Content Box Data
                            var go= content.match(word); //Content Matching @
                            var name= content.match(word); //Content Matching @abc
                            var dataString = 'searchword='+ name;
//If @ available
                            if(go.length>0)
                            {
                                $("#msgbox").slideDown('show');
                                $("#display").slideUp('show');
                                $("#msgbox").html("Type the name of someone or something...");
//if @abc avalable
                                if(name.length>0)
                                {
                                    $.ajax({
                                        type: "POST",
                                        url: siteurl + "ajax/mention", // Database name search
                                        data: dataString,
                                        cache: false,
                                        success: function(data)
                                        {
                                            $("#msgbox").hide();
                                            $("#display").html(data).show();
                                        }
                                    });
                                }
                            }
                            return false;
                        });

当我添加更多文本时会出现问题,它一直显示建议框,我想在 @WORD 之后使用例如开始新句子时停止搜索。

@blackberry is my favorite smartphone ! 

我可能会在该文本区域中多次提及! 我需要你的帮助,每当我使用 @ 时,我如何做到这一点,然后每当我选择时,我都会建议列表,我可以继续写作,并且可能会使用另一个提及

【问题讨论】:

    标签: javascript php jquery mysql mention


    【解决方案1】:

    解决办法是:

                        $("#newstatus").live("keyup",function()
                        {
                            var content=$(this).val() //Content Box Data
                            var index= content.lastIndexOf("@"); //Content Matching @
                            var name= content.substr(n+1);; //Content Matching abc, If you want to get @abc then remove +1.
                            var dataString = 'searchword='+ name;
    

    说明:

    我正在搜索给定字符串 (using lastIndexOf()) 中 @ 的最后一个位置,然后使用 substr() 获取字符串直到结束。

    您无需为此使用 reg exp。正则exp非常昂贵,它会消耗更多资源,据我所知,对于小操作最好忽略正则exp。

    【讨论】:

    • 您好!谢谢您的回复 !但我不知道为什么它根本不起作用,我不再看到建议列表!
    • 正如我使用警报测试过的! var 索引总是返回 0 !这就是为什么它不工作!你能建议吗?
    • 现在是这样工作的: $("#newstatus").live("keyup",function() { var content=$(this).val() //Content Box Data var index = content.lastIndexOf("@"); //内容匹配@var name= content.substr(index+1);; //内容匹配abc,如果要获取@abc则去掉+1.var dataString = ' searchword='+ 名称;
    • 我有一个最后一个问题,你的代码只有在有多个@符号时才有效,我如何第一次检测@?
    猜你喜欢
    • 2014-10-09
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多