我试图在从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 im之后使用例如

@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。常规Exp的成本非常高,它将消耗更多资源。据我所知,较小的操作会忽略常规exp。

关于javascript - textarea中的JavaScript提及脚本中的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33237747/

10-09 15:35