在textarea中的javascript提及脚本中的问题

时间:2015-10-20 13:18:06

标签: javascript php jquery mysql mention

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

   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后使用例如@WORD我开始新句子时停止搜索

@blackberry is my favorite smartphone ! 

我可以在那个textarea中使用多个提及! 我想要你的帮助,无论何时我使用@,我都会这样做,然后我建议列表每当我选择我可以继续写作并可能使用另一个提及

1 个答案:

答案 0 :(得分:0)

解决方案是:

                    $("#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为小型操作。