jquery validate:如果有条件要求,则应用自定义方法

我的表单中有三个字段:状态,询问日期和预期日期

如果我的状态= A,我希望我的预期日期在validation中需要另外我希望我的预期日期validation总是大于询问日期

所以这是我的规则

rules: { status: { required: true, }, ask_date: { required: true, date:true, }, expected_date: { required: function(element){ if($('#status').val()=='A'){ return true; } else { return false; } }, greaterThan: "#ask_date", date:true, }, 

如果字段满足要求的条件,我怎么能说调用greaterThan方法?

“greaterThan”是自定义jqueryvalidation方法,我在这里使用单独的堆栈溢出validation结束日期大于jQuery的开始日期

 jQuery.validator.addMethod("greaterThan", function(value, element, params) { if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) > new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (Number(value) > Number($(params).val())); },'Must be greater than {0}.'); 

“如果字段符合required条件,我该怎么说才能调用greaterThan方法?”

由于该字段仅在这些条件下required ,理想情况下,当字段留空时,不应触发任何其他规则。 但是,自定义方法中缺少一个部分,只要该字段留空,就会忽略它。

针对条件进行测试this.optional(element)将确保不在空白字段上强制执行自定义规则。

 jQuery.validator.addMethod("greaterThan", function(value, element, params) { if (this.optional(element)) { // "required" not in force and field is empty return true; } else { // otherwise, use your rule if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) > new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (Number(value) > Number($(params).val())); } },'Must be greater than {0}.');