5

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

但,

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

我只想要一个验证,也就是说,它也不应该允许年龄小于 18 岁。

我怎么能做到这一点?

4

1 回答 1

4

您可以使用Date-Module中的日期验证器并添加自定义验证器

我刚刚添加了该行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>

于 2016-07-11T07:11:43.800 回答