如何使用formvalidator.net的日期验证器设置最小年龄?

时间:2016-07-08 12:11:02

标签: jquery jquery-form-validator

我正在使用Jquery FormValidator 生日日期属性。

但是,

已经设定它只允许过去的日期和日期不超过120年。

我只想再进行一次验证,也就是说,它也不应该让年龄小于18岁。

我怎么能实现这一点?

1 个答案:

答案 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;
&#13;
&#13;