JavaScript使用警告框避免textarea中的坏词?

时间:2016-05-25 10:53:21

标签: javascript

我必须制作一个脚本,可以检查我的textarea是否有任何坏词。一旦用户离开textarea,他们应该出现警告框。之后,应删除该区域中输入的文本。

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

<!DOCTYPE html>
    <html>
        <head>
            <title>RIC</title>
        </head>

        <body>
            <textarea name="ric" id="textarea">
            </textarea>

            <script>

                my_textarea = document.getElementById('textarea');

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

            </script>

        </body>
</html>

4 个答案:

答案 0 :(得分:3)

这是你能做的。首先创建一个函数,它将检查无效的单词并清除textarea:

document.getElementById('textarea').addEventListener('keyup', filterTextarea, false);

然后将一个事件监听器附加到textarea,每次按下一个键时都会检查它,并将您的函数作为回调传递。

$subject = "Your subject";
$headers = "From: $from ";   
mail($to,$subject,$message,$headers);

答案 1 :(得分:1)

此代码应该有效。它还会通过用一组星号字符替换它们来审查这些词。

<!DOCTYPE html>
<html>
  <head>
    <title>RIC</title>
  </head>
  
  <body>
    <textarea name="ric" id="textarea" onblur="checkWords()"></textarea>
    
    <script>
      function checkWords() {
        var my_textarea = document.getElementById('textarea').value;
        var pattern = /fox|dog/ig;
        
        if (my_textarea.match(pattern)) {
          alert("Hey no bad words here!");
          my_textarea = my_textarea.replace(pattern, "****" );
          document.getElementById('textarea').value = my_textarea;
        }
        
      }
    </script>
    
  </body>
</html>

答案 2 :(得分:0)

您的函数未被调用的原因(在页面加载时它会被调用)是因为没有事件处理程序来检查用户何时离开文本区域。您可以使用onChangeonBlur在用户离开时触发,但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>

对于坏词的检查,如其他人所述,您可以使用<text>.indexOf(<bad word>)循环一系列“坏词”,并检查是否找到了索引。使用正则表达式可能有一种“更好”的方式,但无法帮助解决这个问题

答案 3 :(得分:0)

这是我的代码,请用坏词填充badword数组,这段代码必须反对坏词,它会。!!!

        <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>