Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery验证:如果有条件需要,则应用自定义方法_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript jquery验证:如果有条件需要,则应用自定义方法

Javascript jquery验证:如果有条件需要,则应用自定义方法,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我的表单中有三个字段:状态、询问日期和预期日期 如果我的状态=A,我希望验证中需要我的预期日期 此外,我希望我的预期验证日期始终大于询问日期 这是我的规则 rules: { status: { required: true, }, ask_date: { required: true, date:true, }, expected_date: { required: fu

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

如果我的状态=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验证方法

“仅当字段满足
必需的
条件时,我如何说调用
greaterThan
方法?”

由于在这些条件下,该字段仅是
必需的
,因此理想情况下,当该字段留空时,不应触发任何其他规则。但是,自定义方法中缺少一个片段,该片段允许在字段留空时忽略它

根据条件测试,
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}.');

@哇,你有足够的声誉,已经知道我们不允许在评论中提问/回答问题。
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}.');