有条件的验证取决于2个要素

时间:2019-04-29 20:20:07

标签: jquery jquery-validate

使用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);
    }
}, "");     

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

1 个答案:

答案 0 :(得分:0)

您不需要为任何新的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/