我正在使用Jquery FormValidator 生日日期属性。
但是,
已经设定它只允许过去的日期和日期不超过120年。
我只想再进行一次验证,也就是说,它也不应该让年龄小于18岁。
我怎么能实现这一点?
答案 0 :(得分:4)
您可以使用Date-Module中的日期验证器并添加custom validator。
我刚添加了行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'
});
&#13;
<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>
&#13;