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

Issues in javascript mention script in textarea

我正在尝试在从 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 ! 

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

解决方案是:

                    $("#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。 Regular Exp是非常昂贵的,它会消耗更多的资源,据我所知最好忽略regular exp进行小操作。