JavaScript通过使用警告框来避免文本区域中的脏话?

JavaScript通过使用警告框来避免文本区域中的脏话?,javascript,Javascript,我必须做一个脚本,可以检查我的文本区,如果有任何不好的话在那里。一旦用户离开文本区域,他们的警告框就会出现。之后,应删除该区域中输入的文本 我需要JavaScript解决方案(请不要jQuery) 里克 my_textarea=document.getElementById('textarea'); 如果(/\b(?=\w)(混蛋他妈的)\b(?!\w)/i.test(my_textarea.value)){ 警惕(“嘿,这里没有坏话!”); }否则{ //好的,继续! } 以下是您可以做的。

我必须做一个脚本,可以检查我的文本区,如果有任何不好的话在那里。一旦用户离开文本区域,他们的警告框就会出现。之后,应删除该区域中输入的文本

我需要JavaScript解决方案(请不要jQuery)


里克
my_textarea=document.getElementById('textarea');
如果(/\b(?=\w)(混蛋他妈的)\b(?!\w)/i.test(my_textarea.value)){
警惕(“嘿,这里没有坏话!”);
}否则{
//好的,继续!
}

以下是您可以做的。首先创建一个函数,该函数将检查无效单词并清除文本区域:

function filterTextarea() {
  var textarea = document.getElementById('textarea');
  var matches = textarea.value.match(<THE REGEX FOR THE WORDS YOU WANT TO FILTER>);

  if (matches) {
    alert('Hey, no bad words!');
    textarea.value = '';
    return;
  }

  // Other stuff.
}

函数没有被调用的原因(在页面加载时它确实被调用过一次)是因为当用户离开文本区域时,没有要检查的事件处理程序。您可以使用
onChange
onBlur
在用户离开时都会触发,但
onChange
仅在内容实际更改时才会触发

尝试将代码更改为:

        <textarea name="ric" id="textarea" onBlur="check()">


        </textarea>

                <script>
                var check = function(){
                my_textarea = document.getElementById('textarea');

                    if (/\b(?=\w)(asshole|fucking)\b(?!\w)/i.test(my_textarea.value)) {
                        alert("Hey no bad words here!");
                        my_textarea.value = "";
                    } else {
                        // Okay move on!
                    }}
                </script>

var check=函数(){
my_textarea=document.getElementById('textarea');
如果(/\b(?=\w)(混蛋他妈的)\b(?!\w)/i.test(my_textarea.value)){
警惕(“嘿,这里没有坏话!”);
my_textarea.value=“”;
}否则{
//好的,继续!
}}

至于检查坏单词,正如其他人所说,您可以使用
.indexOf()
循环一个“坏单词”数组,并检查是否找到索引。使用正则表达式可能会有一种“更好”的方法,但也不能帮上忙

这段代码应该可以工作。它还将审查这些单词,用一组星号字符替换它们


里克
函数校验字(){
var my_textarea=document.getElementById('textarea').value;
var模式=/fox | dog/ig;
if(my_textarea.match(模式)){
警惕(“嘿,这里没有坏话!”);
my_textarea=my_textarea.replace(模式,*****);
document.getElementById('textarea')。value=my\u textarea;
}
}

下面是我的代码,请用你的坏单词填充坏单词数组,并且此代码必须反对坏单词,它会的

        <div>
            <textarea name="ric" id="txtArea" onkeyup="badWordChecker()" onblur="nothingTyped()"> </textarea>
        </div>
        <script>
            function nothingTyped() {
                var badWordTextBoxLength = document.getElementById('txtArea').value.length;

                if (badWordTextBoxLength == 0) {
                    alert("YOu cannot leave easily!!!Please type something ");
                    document.getElementById('txtArea').focus();
                    return false;
                }
            }
            function badWordChecker() {
                //create an array of bad words
                var badwords = ["f***", "a****", "f***"];
                var badWordTextBox = document.getElementById('txtArea');
                var badWordTextBoxValue = badWordTextBox.innerText;
                var backgroundcolor = "white";

                function isTheWordBad(value, index, array) {
                    if (value == badWordTextBoxValue) {
                        alert("hey!No badwords");
                        badWordTextBox.textContent = "";
                        return true;
                    }
                    else {                    
                        return false;
                    }

                }
                var result = badwords.filter(isTheWordBad);
            }
        </script>
</body>

函数nothingTyped(){
var badWordTextBoxLength=document.getElementById('txtArea').value.length;
如果(badWordTextBoxLength==0){
提醒(“您不能轻易离开!!!请键入内容”);
document.getElementById('txtArea').focus();
返回false;
}
}
函数badWordChecker(){
//创建一个坏单词数组
var badwords=[“f***”,“a****”,“f***”];
var badWordTextBox=document.getElementById('txtArea');
var badWordTextBoxValue=badWordTextBox.innerText;
var backgroundcolor=“白色”;
函数isTheWordBad(值、索引、数组){
如果(值==badWordTextBoxValue){
警惕(“嘿!不要说坏话”);
badWordTextBox.textContent=“”;
返回true;
}
否则{
返回false;
}
}
var result=badwords.filter(isTheWordBad);
}

使用
document.getElementById(“textarea”)获取textarea的值
并找出你所说的坏话的索引。如果索引大于0,则表示它包含坏单词。提醒用户。您的解决方案有什么问题吗?当我实际离开文本区域时,不会出现警告框。在这之后,文本区域中的文本应该被删除。@viveksinghggits所以实际上你的意思是我必须用坏单词创建一个数组,然后检查索引是否大于0。之后会出现一个警告框。这就是你的意思吗?是的,如果你想过滤掉很多单词,可以这样做。你的评论解释了为什么onchange更好,但你仍然选择onblur?我的评论只是说明了区别。我没有使用onBlur而不是onChange的具体原因,我想这取决于具体情况。是的,如果没有更改,为什么要验证某些内容?不知道。这只是一个简短的片段,onBlur在onChange之前就出现了。我在代码之后写了评论。问题是,当用户删除不好的单词并移动光标时,每个键都会收到一个
警报
。实际上,这样做(以及询问者要求的)是清除文本区域。因此,如果检测到一个坏单词,整个文本将被删除。不是说这是一个好主意或用户体验,但这是被问到的。
        <textarea name="ric" id="textarea" onBlur="check()">


        </textarea>

                <script>
                var check = function(){
                my_textarea = document.getElementById('textarea');

                    if (/\b(?=\w)(asshole|fucking)\b(?!\w)/i.test(my_textarea.value)) {
                        alert("Hey no bad words here!");
                        my_textarea.value = "";
                    } else {
                        // Okay move on!
                    }}
                </script>
        <div>
            <textarea name="ric" id="txtArea" onkeyup="badWordChecker()" onblur="nothingTyped()"> </textarea>
        </div>
        <script>
            function nothingTyped() {
                var badWordTextBoxLength = document.getElementById('txtArea').value.length;

                if (badWordTextBoxLength == 0) {
                    alert("YOu cannot leave easily!!!Please type something ");
                    document.getElementById('txtArea').focus();
                    return false;
                }
            }
            function badWordChecker() {
                //create an array of bad words
                var badwords = ["f***", "a****", "f***"];
                var badWordTextBox = document.getElementById('txtArea');
                var badWordTextBoxValue = badWordTextBox.innerText;
                var backgroundcolor = "white";

                function isTheWordBad(value, index, array) {
                    if (value == badWordTextBoxValue) {
                        alert("hey!No badwords");
                        badWordTextBox.textContent = "";
                        return true;
                    }
                    else {                    
                        return false;
                    }

                }
                var result = badwords.filter(isTheWordBad);
            }
        </script>
</body>