我正在尝试验证包含用户出生日期的输入字段,我需要执行两次检查 - 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”。
答案 0 :(得分:2)
如果您需要两条独特的消息,那么您将需要两个独特的规则/方法。您可以将公共代码放入单个函数中,并在自定义方法中调用它。
像这样......
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
}
}
});
答案 1 :(得分:1)
如果您想处理2条不同的消息,那么您可以使用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
答案 2 :(得分:0)
尝试使用范围规则:
rules: {
field: {
required: true,
range: [18, 100]
}
}