Javascript清除发誓词语的评论

时间:2014-03-04 16:42:47

标签: javascript comments

我正在创建一个评论板并通过Javascript我试图实现一个脚本,如果它有一个不受欢迎的单词,将阻止用户提交一个段落。我已经在线查找并努力寻找任何示例。这是我到目前为止,但不确定我是否应该使用index.of

的index.php

<div class="askComment">
    <h2>Submit new comment</h2>
    <!--comment form -->
    <form id="form" method="post">
        <!-- need to supply post id with hidden fild -->
        <input type="hidden" name="postid" value="<?php echo $post; ?>">
        <input type="hidden" name="type" value="A">
            <p>Hello <strong><?php echo $fname; ?></strong> what do you have to say</p>
            <input type="hidden" name="fname" id="comment-name" value="<?php echo $fname; ?>" >
            <input type="hidden" name="userid" id="comment-mail" value="<?php echo $UserId; ?>" >
            <p>Your comment *</p>
            <textarea name="comment" id="comment" cols="30" rows="10" placeholder="Type your comment here...." ></textarea>
            <div id="error"></div>
        <input type="submit" id="submit-comment" name="submit" value="Submit Comment">
    </form>
    </div>

mod_comment.php

$(document).ready(function () {

    document.getElementById("submit-comment").disabled = true;

    var swear = new Array();
    swear[0] = "jelly";
    swear[1] = "trumpet";
    swear[2] = "chocolate";

    $("#comment").change(function () {

        var comment = $("#comment").val();

        if (comment.indexOf('????') === -1) {
            $("#error").html('<font color="red">Please rewrite <strong>bad</strong> word found.</font>');
        } else {
            document.getElementById("loginsubmit").disabled = false;
        }

    });
});

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案(类似于您的,相同的逻辑,只需要很少的更改/添加)。

<强> http://jsfiddle.net/pK7DK/

$("#submit-comment").attr('disabled', true);

var swear = new Array();
swear[0] = "jelly";
swear[1] = "trumpet";
swear[2] = "chocolate";

$("#comment").on("keyup", function () {

  var comment = $("#comment").val();

  word = comment.split(' ');

  for (i = 0; i < word.length; i++) {

    worda = word[i].trim();

    worda = worda.replace(/\.|,|!|:| |;|\?|\r?\n/g, ''); // bad word + one of chars = bad word

    console.log(worda);

    if ($.inArray(worda, swear) != -1) {
      $("#error").html('<font color="red">Please rewrite <strong>bad</strong> word found.</font>');
      $("#submit-comment").attr('disabled', true);
      break;
    } else {
      $("#error").html('');
      $("#submit-comment").attr('disabled', false);
    }
  }

});

我宁愿使用'keyup'事件,因此用户在输入时会收到错误消息。但是 - 如上所述,这很容易被覆盖,服务器端检查是必须的。

答案 1 :(得分:0)

看看这个:http://www.w3schools.com/jsref/jsref_search.asp(搜索数组内的数组);

它可能不是最佳选择,但它将是您代码的开始。

编辑:一个更好的选择(可能不是最好的选项)可能是将注释字符串分隔成一个数组并在两个数组之间进行交集,这里是一个解释如何在js中进行数组之间交叉的问题{{3 }}