2

過去に JQuery 検証プラグインのカスタム メソッドをいくつかまとめましたが、複数の条件に対してチェックしたいと思ったのはこれが初めてです。

フィールド内のhtmlの存在を検出しようとしている単純なシナリオです。大規模な正規表現は必要ありません。クライアント側で html が許可されていることをユーザーに伝えたいだけです。もちろん、フィールド値に html がある場合はサーバー側の送信をブロックしていますが、優れたユーザー エクスペリエンスが必要です。

いくつかの重要な要素を探すもっと簡単な方法があるに違いありません。配列をループしてそれを行うことができますか?

<script language="javascript">
    $(document).ready(function(){

    $.validator.addMethod("findhtml", function(value, element) {

var commentclean = new Boolean();

if (element.value.indexOf("<") != -1) 
{
    commentclean= false;
    //alert('found <');
 }
else if
(element.value.indexOf("http") != -1){
    commentclean= false;
    //alert('found http');
}
else
{
    commentclean= true;
    //alert('nothing found')
}

return this.optional(element) || ( commentclean );

}, "* match the string");

});
</script>
4

2 に答える 2

1

もしかして、こういうこと?

$(document).ready(function(){

    $.validator.addMethod("findhtml", function(value, element) {

        var commentclean = true,
            disallowed = ['<', 'http'];

        for (var i=0, len = disallowed.length; i<len; i++) {
            if (element.value.indexOf(disallowed[i]) != -1) {
                commentclean = false;
                break;
            }        
        }

        return this.optional(element) || ( commentclean );

    }, "* match the string");

});
于 2013-07-03T14:39:28.670 に答える
0

次のようなことができます。

var el=$('<div>').html(value);
commentclean = (   el.html() == el.text()
                && el.text().indexOf('http') == -1
);
于 2013-07-03T14:34:38.250 に答える