如果用户键入文本区域中不需要的单词,我将试图警告他。
这只是对一些词的一点验证。
我能做出这样的事情:
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?
演示
发布于 2012-09-21 14:02:35
要使用数组,您将需要对其中的每个单词进行循环,并对拆分数组中的每个单词进行循环。但是,您可以在第一次比赛中返回:
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事件调用此函数也是可取的,因为输入不是用户向表单输入输入的唯一方式。
以下是更新的演示
发布于 2012-09-21 14:06:00
您不需要每次按下键时都需要.split输入,在这种情况下,正则表达式是首选的:
检查更新的小提琴
若要基于数组生成表达式,请执行以下操作:
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");
//}
});https://stackoverflow.com/questions/12531999
复制相似问题