1

私は現在、配列で悪い言葉をフィルタリングするサイトに取り組んでいます。ユーザーがテキストボックスに単語を入力するたびに、配列から単語が見つかった場合に警告ボックスが表示されます。同じことをしたいのですが、テキストボックスを使用する代わりに、contenteditable div を使用したいと思います。これにはjqueryが必要ですが、最初のコードは純粋なjsで行われたため、コードに競合があるようです。

フィドル リンク: http://jsfiddle.net/br7TD/

これがJavaScriptです:

var swear_words_arr=new Array("bad","evil","freak");
var swear_alert_arr=new Array;
var swear_alert_count=0;

function reset_alert_count() {
swear_alert_count=0;
}

function validate_user_text() {
reset_alert_count();
var compare_text=document.form1.user_text.value;

for(var i=0; i<swear_words_arr.length; i++) {
    for(var j=0; j<(compare_text.length); j++)
    {
        if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
            {
                swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
                swear_alert_count++;
            }
    }
}

var alert_text="";  
for(var k=1; k<=swear_alert_count; k++)
{
    alert_text+="\n" + "(" + k + ")  " + swear_alert_arr[k-1];
}

if(swear_alert_count>0) {
    alert("Please refrain from using offensive words"); /* + alert_text */
    document.form1.user_text.select();
    }
else {
    document.form1.submit();
}
}

function select_area() {
document.form1.user_text.select();
}

window.onload=reset_alert_count;

私はこれにほとんど慣れていません。どんな助けでも大歓迎です。

4

1 に答える 1

2

試す

<div id="textArea">
    <span id="myInput" contenteditable="true">kfjdkfj</span>
</div>

var swear_words_arr=new Array("bad","evil","freak");
var regex = new RegExp('\\b(' + swear_words_arr.join('|') + ')\\b', 'i' );

function validate_user_text() {
    var text = $('#myInput').text();

    if(regex.test(text)) {
        alert("Please refrain from using offensive words"); /* + alert_text */
        $('#myInput').focus();
        return false;
    }

}

デモ:フィドル

よりjQueryのようなソリューションはここにあります

于 2013-04-18T03:29:37.287 に答える