我使用以下代码将一个单词替换为输入字段中的空白区域。
但是,我希望能够用空格替换多个单词。
基本上我需要创建一个单词过滤器,这样用户就无法输入某些单词。
HTML CODE
<input type="text" id="demo" name="demo" onkeyup="myFunction()" onkeydown="myFunction()" />
Javascript代码:
<script>
function myFunction() {
var words = "badword1";
var str = document.getElementById("demo").value;
var res = str.replace(words, " ");
document.getElementById("demo").value = res;
}
</script>
我尝试过这样的事情:
<script>
function myFunction() {
var words = "badword1 || badword2 || bad word3";
var str = document.getElementById("demo").value;
var res = str.replace(words, " ");
document.getElementById("demo").value = res;
alert('that word is not allowed!');
}
</script>
但这不起作用。
首先,它不会将任何给定的badword(s)
替换为empty space
,然后只要在输入字段中输入第一个字母就会触发aler();
消息!
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
使用正则表达式:
var words = new RegExp("badword1|badword|bad word3", g);
实际上你不应该信任客户端代码......
答案 1 :(得分:0)
这样的事情会带来坏词的数组......循环遍历它们会创建一个全局正则表达式,然后用它来替换它...如果它们改变了警告,则比较原始字符串和结果字符串。
var badwords = ['badword1','badword2','badword3']; //array of badwords
function myFunction() {
var str = document.getElementById("demo").value;
var res = str;
for (var i = badwords.length - 1; i >= 0; i--) {
var badword = badwords[i];
badWordRegex = new RegExp(badword, 'g');
res=res.replace(badWordRegex, " ");
};
document.getElementById("demo").value = res;
if (str !== res){
alert('that word is not allowed!');
}
}