有没有一种更优雅、可扩展的方式可以向JQuery验证自定义方法添加多个条件

Is there a more elegant, extensible way of adding multiple conditions to a JQuery validation custom method?

本文关键字:验证 JQuery 可以向 方式 自定义方法 添加 条件 可扩展的 一种 有没有      更新时间:2023-09-26

我过去为JQuery验证插件组合了一些自定义方法,但这是我第一次想要针对多个条件进行检查。

这是一个简单的场景,我试图检测字段中是否存在html。我不需要一个广泛的Regex,我只想告诉用户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>

也许是这样的?

$(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");
});

您可以这样做:

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