我试图在从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中使用多个提及! 我想要你的帮助,无论何时我使用@,我都会这样做,然后我建议列表每当我选择我可以继续写作并可能使用另一个提及
答案 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为小型操作。