如何删除inputbox中的某些单词

时间:2014-12-19 15:57:37

标签: javascript php html validation

在我的表单中,我的表单中有13个输入框,我允许用户使用以下脚本仅键入文本和数字

FILTER INPUT TEXT

$(function() {//<-- wrapped here
                $('.restrict').on('input', function() {
                    this.value = this.value.replace(/[^a-zA-Z0-9@]/g, ''); //<-- replace all other than given set of values
                });
            });

以上脚本仅允许来自a-z的文本,仅限数字

我的问题是我需要在将其保存到数据库之前过滤输入框中的某些单词

例如:如果用户在输入框中输入*adult* content我需要过滤单词adult并仅将content保存到数据库

有人可以帮助我

并且可以帮助我在哪里找到坏词列表

5 个答案:

答案 0 :(得分:3)

如果需要过滤大量单词,那么最好将该逻辑从JS转移到PHP。此外,使用JavaScript,我仍然可以操作POST请求,以便将错误的单词输入数据库。

答案 1 :(得分:1)

尝试使用replace()

查看多个单词的@BBonifield答案

http://jsfiddle.net/6hxspv14/2/

$(function(){

    var timer = 0;
    var sensor_word = ['adult', 'porn', 'sex'];

    $('.restrict').on('keyup', function(){

        clearTimeout(timer);
        var new_value = this.value;
        var new_sensor = $('.restrict').val();

        $.each(sensor_word, function (idx, word) {
          new_sensor = new_sensor.replace(word, '***');
        }); 

        timer = setTimeout(function(){
             $('#result').text( new_sensor );
        }, 0);

    });

    $('.restrict').on('keydown', function(){
        clearTimeout(timer);
    });


});

答案 2 :(得分:0)

您可以通过几种不同的方式完成它,但一种简单的方法就是删除您不希望在用户离开该字段时包含的所有单词。

var badWords = [ 'adult', 'crap' ];
$(':input').on('blur', function(){
  var value = $(this).val();
  $.each(badWords, function(idx, word){
    value = value.replace(word, '');
  });
  $(this).val( value);
});

答案 3 :(得分:0)

$(function() { 
    $('.restrict').on('input', function() {

        var value = this.value;
        var isAdultContent = ( value.match( /^\W*adult\W+/ ) || [] ).length;
        var content = value.replace( /^\W*adult\W+/, '' );

        if( isAdultContent ){
            //...
        }
        else{
            //...
        }

    });
});

答案 4 :(得分:0)

以下内容也可能有用,请使用$ .inArray检查值是否在数组中:

$(function() {
$("#submit").click(function(e) {
    e.preventDefault();

    var badwords = ["doodoo", "peepee"];
    var inputVal = $('.restrict').val();

    if ($.inArray(inputVal, badwords) > -1) {  // returns -1 if value not in array
        $('.restrict').val('');   // empties input box if swear word is found
    }
    });
});

检查这个小提琴:http://jsfiddle.net/jxvvqraL/