我试图警告用户是否在textarea中键入了一个不必要的单词。
它只是对某些词语进行了一点验证。
我达到了这样的目的:
var words = "hello";
$("textarea").keyup(function(e){
var spliting = $("textarea").val().split(" ");
if(e.keyCode == 32){ // when the user hits space bar
if($.inArray(words, spliting) != -1){
$("span").css("background","red");
}else{
$("span").css("background","green");
}
}
});
这是最好的方法吗?
如果我需要检查多个单词,如何将变量words
迁移为array
?
答案 0 :(得分:2)
要使用数组,您需要遍历其中的每个单词并循环分割数组中的每个单词。但是,您可以在第一场比赛中返回:
var words = ["hello","goodbye"];
$("textarea").keyup(function(e){
var spliting = $("textarea").val().split(" ");
for (var i=0; i<words.length; i++) {
if($.inArray(words[i], spliting) != -1){
$("span").css("background","red");
// break on first match since there is no need to continue looping
// if it is already red.
break;
}else{
$("span").css("background","green");
}
}
});
我删除了空格检查。即使它使函数更有效,但是当有人回到正确的拼写并最终得到无效的单词时,你需要警惕。你拥有它的方式,除非稍后输入空格,否则这些情况永远不会导致标记的单词被找到。
建议您为onchange
和blur
事件调用此函数,因为输入不是用户将输入输入表单输入的唯一方式。
答案 1 :(得分:1)
每按一次键,您不需要.split
输入,这是首选正则表达式的情况:
<强> Check the updated fiddle 强>
基于数组生成表达式:
var blackList = ['hello','world'];
var expression = new RegExp('\\b(' + blackList.join('|') + ')\\b','i');
$("textarea").keyup(function(e)
{
//if (e.keyCode === 32)
//{in comment after reading the answer posted by Michael Berkowski
if ($(this).val().match(expression))
{
$("span").css("background","red");
return;
}
$("span").css("background","green");
//}
});