我正在使用Jquery FormValidator birthdate属性。
但
已设置为仅允许过去的日期和不超过 120 年的日期。
我只想再验证一个,也就是说,它也不应该允许年龄小于 18 岁。
我怎样才能做到这一点?
您可以使用日期模块中的日期验证器并添加自定义验证器。
我只是添加了行var requiredAge = 18;
并将 var 添加到验证中。
https://jsfiddle.net/03ehx9ns/
$.validate({
modules : 'date'
});
$.formUtils.addValidator({
name : 'older18',
validatorFunction : function(val, $el, conf) {
var requiredAge = 18;
var dateFormat = 'yyyy-mm-dd';
if($el.valAttr('format')) {
dateFormat = $el.valAttr('format');
}
else if(typeof conf.dateFormat !== 'undefined') {
dateFormat = conf.dateFormat;
}
var inputDate = $.formUtils.parseDate(val, dateFormat);
if (!inputDate) {
return false;
}
var d = new Date();
var currentYear = d.getFullYear();
var year = inputDate[0];
var month = inputDate[1];
var day = inputDate[2];
if (year === currentYear - requiredAge) {
var currentMonth = d.getMonth() + 1;
if (month === currentMonth) {
var currentDay = d.getDate();
return day <= currentDay;
}
else {
return month < currentMonth;
}
}
else {
return year < currentYear - requiredAge && year > (currentYear - 124); // we can not live for ever yet...
}
},
errorMessage : 'You need to be older then 18',
errorMessageKey: 'badDate'
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-form-validator/2.3.26/jquery.form-validator.min.js"></script>
<form action="" id="date-form">
<p>
Birth date
<input name="..." data-validation="older18"
data-validation-help="yyyy-mm-dd (Not allowing dates in...">
</p>
<p>
Time
<input name="" data-validation="time" data-validation-help="HH:mm">
</p>
<p>
<input type="submit">
</p>
</form>