0

我试图在从 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 im 使用例如之后开始一个新句子时,我都想停止搜索

@blackberry is my favorite smartphone ! 

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

4

1 回答 1

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。

于 2015-10-20T13:27:19.203 回答