【问题标题】:jquery validate - check which rule is not fulfilledjquery validate - 检查哪个规则不满足
【发布时间】:2011-10-04 13:33:55
【问题描述】:

我有一个包含多个字段并使用 jQuery 验证插件的表单。我的输入有几个规则:

{
    required : "#somecheckbox:not(:checked)",
    regex : "\d{10}",
    maxlength : 10,
    remote : [object Object],
    __dummy__ : true
} 

我想知道的是,我如何检查哪些规则没有得到满足(或者某些特定规则是否有效)。我知道这是可能的,因为远程验证在其他请求完成之前不会触发 ajax 请求,但我在 jquery.validate.js 中找不到它是如何完成的。

【问题讨论】:

    标签: jquery validation jquery-validate validationrules


    【解决方案1】:

    我已经通过检查 jQuery 验证插件的来源找到了如何做到这一点,所以我创建了自己的函数来利用它:

    $.validator.prototype.ruleValidationStatus = function( element ) {
        element = $(element)[0];
        var rules = $(element).rules();
        var errors ={};
        for (var method in rules ) {
            var rule = { method: method, parameters: rules[method] };
            try {
                var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
    
                errors[rule.method] = result ;
    
            } catch(e) {
                console.log(e);
            }
        }
        return errors;
    } 
    

    用法很简单:

    $("#myform").validate().ruleValidationStatus($("#myField"))
    

    样本结果是:

    {
        required : true,
        regex : true,
        maxlength : true,
        remote : false,
        __dummy__ : true
    } 
    

    从这个对象很容易看出哪些规则不满足。

    【讨论】:

    • 那里的dummy是什么?
    • @pabben 这是很久以前的事了,所以我不记得了,但即使我不再使用 jQuery,我相信这是两件事之一:我想添加一个规则始终为真以便测试输出,或者插件需要一个为真以便向表单添加一些验证元素。也许什么都不是,只是为了说明。抱歉没记住,但我想你可以忽略它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    相关资源
    最近更新 更多