我试图在从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/