【问题标题】:conditional validation depending on 2 elements取决于 2 个元素的条件验证
【发布时间】:2019-04-29 20:20:06
【问题描述】:

使用 jquery 验证,我使用了 .addMethod 添加正则表达式。如果未选中复选框,我还有一条规则,那么它将要求填写元素并遵守正则表达式。

noPreviousEmployers 是复选框的 id,如果选中则不应显示任何验证消息,如果未选中则将显示所需消息,如果输入中有数据则应运行正则表达式

    $.validator.addMethod("regex", function (value, element, regexpr) {
       return regexpr.test(value);
    }, "");


rules:{
    EndSalary1:{
        required: '#noPreviousEmployers:unchecked', 
        regex: /^\$?[0-9]{1,3}(\,?\d{3})?(\,?\d{3})?(\.[0-9]{2})?$/
    }

},
messages:{  
    EndSalary1:{
         required: "Required Field", 
         regex: "Format As US Currency"
    }    
}

我什至试过这个

$.validator.addMethod("regex", function (value, element, regexpr) {
    if(value.length != 0){
        return regexpr.test(value);
    }
}, "");     

当我选中复选框进行测试并且字段中没有数据时,它将显示正则表达式验证消息。在这种情况下,它不应显示任何内容。

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    您无需为任何新的regex 模式编写自定义规则。 the additional-methods.js file 中已经内置了一个名为 pattern 的默认规则,该规则将正则表达式作为其参数。

    rules:{
        EndSalary1:{
            required: '#noPreviousEmployers:unchecked', 
            pattern: /^\$?[0-9]{1,3}(\,?\d{3})?(\,?\d{3})?(\.[0-9]{2})?$/
        }
    }
    

    演示jsfiddle.net/mrf5ja4d/

    【讨论】:

    • 奇怪,因为网络上有很多很多很多地方,包括 Stack Overflow,人们会告诉你按照我所做的方式执行所需的参数,并且它确实有效。试一试。我忘记添加additional-methods.js 文件
    • 从 jquery 验证文档jqueryvalidation.org/required-method 转到第 5 个示例。
    • @Miranda,你是对的。相应地更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2021-08-28
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多