是否有更优雅,可扩展的方法为JQuery验证自定义方法添加多个条件?

时间:2013-07-03 14:14:16

标签: javascript jquery validation

我在过去为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>

2 个答案:

答案 0 :(得分: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");

});

答案 1 :(得分:0)

你可以这样做:

var el=$('<div>').html(value);
commentclean = (   el.html() == el.text()
                && el.text().indexOf('http') == -1
);