使用Jquery检测过滤词的警报

4

我有一个jsfiddle网站。

当用户输入特定的单词时,需要向用户发出警报。目前,当我输入某一行,例如:I love ants,它会向我警告整个行I love ants,但我只想要ants被警告给我。(在我的示例中,蚂蚁是需要过滤的单词。请参考jsfiddle。)

var filter = ['ants', 'words'],
    reg = new RegExp("(" + filter.join("|") + ")", "g");

$('#texta').keyup(function(){
    $("#dest").html(
        $(this).val().replace(reg, "<mark>$1</mark>")    
    );
   if(reg.test($(this).val())==true)
   {
       alert($(this).val());
   }       
});

我不太明白你的意思。 "它会向我发出整行警报,我喜欢蚂蚁,但我只想让蚂蚁警报给我。" - Josh Crozier
它正在警报“蚂蚁”和“单词”。 - Pratik Joshi
但需要一次只警告一次,而不是整行@PratikJoshi...然后如果我输入别的什么,它会继续提醒我。 - Standin.Wolf
@JoshC 我来举个例子……如果我输入 hello world ,它不会弹出警报,这是正确的。然后我输入 hello world ants,它就会警报,但不是只警报 ants,它会警报我 hello world ants - Standin.Wolf
1个回答

2
你可以使用以下方式只显示匹配部分:

您可以将其更改为仅显示匹配部分:

alert($(this).val().match(reg));

这里有一个 jsFiddle

如果你想要针对每个匹配项都有单独的提示,那么你需要进行循环。

编辑:这里有一个版本,每次用户在列表中输入一个单词时都会弹出提示。

编辑:这里有一个版本,演示了可选的使用正则表达式而不是单词的方法。请注意,任何斜杠都必须进行双重转义。因此,例如,为了匹配ants但不匹配pants,需要将\\bants\\b添加到单词列表中。例如,此演示将匹配\bb..\b(因此,匹配barbaz等,但不匹配batters)。


1
@EdCottrell 在,你说的正是我想要的。 - Standin.Wolf
1
@User211 相信这就是你想要的:http://jsfiddle.net/TexasBrawler/fqthJ/2/ - elixenide
2
@EdCottrell 这正是我想要的...只需将 jsfiddle 添加到您上面的答案中...这样我就可以接受它作为答案..谢谢 - Standin.Wolf
3
最后一个问题...我现在已经修改了我的代码...我正在使用$.get函数从文本文件中获取单词。例如 ants,words。我的代码是可行的,但是当我输入 pants 时它不起作用(即由于 pants 中包含 ants 而弹出警报)。我该如何添加 \b?这是我的一部分代码:var filter=new Array();$.get('1.txt', function(data) { filter= data.split(',');其余的代码与你的相同...只是我想添加 \b,但我不知道应该把它放在哪里... - Standin.Wolf
显示剩余18条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接