1

我正在尝试验证包含用户出生日期的输入字段,我需要进行两项检查- 1.确保用户年满 18 岁,2 . 确保他/她的年龄不超过 100 岁。

我的自定义验证方法 -

$.validator.addMethod(
       "datediff",
       function(value, element, diff_years) {
          var curr_date = new Date().getFullYear();
          var element_date = Date.parse($(element).val()).getFullYear();
          return element_date >= curr_date - diff_years;
       }
);

这就是我添加规则的方式。

var validator = $('form').validate({
     rules: {
        'dob': {datediff: 18}
     },
     messages: {
         dob: {datediff: 'You have to be 18 or more!'}
     }
});

我如何重复使用datediff规则两次,以便我可以同时进行检查?我尝试仅附加另一条datediff规则,但这没有用。

编辑:我还需要显示 2 条不同的消息 - 例如 - 1.第一个条件“你必须年满 18 岁”,第二个条件“你不能超过 100岁” 。

4

3 回答 3

3

如果您需要两个独特的消息,那么您将需要两个独特的规则/方法。您可以将通用代码放入单个函数中,然后从自定义方法中调用它。

像这样的东西...

function datediff(value, diff_years) {
    var curr_date = new Date().getFullYear();
    var element_date = Date.parse(value.getFullYear();
    return element_date >= curr_date - diff_years;
}

$.validator.addMethod( "over18", function(value, element) {
    // your custom function below
    // var result = datediff(value, 18);
    // return true if age is greater than 18
    // return false and error message will display
}, "You must be over 18");

$.validator.addMethod( "under100", function(value, element) {
    // your custom function below
    // var result = datediff(value, 100);
    // return true if age is less than 100
    // return false and error message will display
}, "You must be under 100");

$('form').validate({
     rules: {
         dob: {
             over18: true,
             under100: true
         }
     }
});
于 2013-08-26T21:04:28.830 回答
1

如果您想处理 2 条不同的消息,那么您可能可以使用maxmin

max:使元素需要给定的最大值。
min:使元素需要给定的最小值。

规则:

    rules: {
        dob: {
            min: 18,
            max: 100,
            required: true
        }
    }

显示的消息:

    messages: {
        dob: {
            required: "Please enter the age",
            min: "Enter the age above 18",
            max: "Age should be below 100"
        }
    }

JSFiddle中签出

于 2013-08-26T12:07:46.820 回答
0

尝试使用范围规则:

rules: {
field: {
  required: true,
    range: [18, 100]
  }
}

来源:http: //jqueryvalidation.org/range-method

于 2013-08-26T11:05:19.830 回答