我的表单中有三个字段:状态,询问日期和预期日期
如果我的状态= A,我希望在验证时需要我的预期日期 另外,我希望我的预期日期有效,总是大于询问日期
所以这是我的规则
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”是自定义jquery验证方法,我在这里使用单独的堆栈溢出Validate that end date is greater than start date with 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}.');
答案 0 :(得分:1)
"如果字段符合
greaterThan
条件,我该怎么说才能调用required
方法?"
由于该字段在这些条件下仅为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}.');