使用日期输入验证角度年龄

vis*_*hnu 0 angularjs

我正在尝试使用angular指令验证年龄(即大于18).谁能帮我验证年龄?

<input type="date" data-ng-model="personalDetailsObj.personalDetails.dob"  name="dob" ng-required="true" ng-class="{ 'has-errors' : personalDetailForm.dob.$invalid, 'no-errors' : personalDetailForm.dob.$valid}" age-valid="18">
Run Code Online (Sandbox Code Playgroud)

这是我的指示

.directive('ageValid', ['$filter', function($filter) {
    return {
        restrict: 'A',
        require: 'ngModel',
        scope: {
          ageValid: '='
        },
        link: function(scope, element, attrs) {
          scope.$watch(attrs.ngModel, function(value) {
              var todayDate = new Date(),
                  todayYear = todayDate.getFullYear(),
                  todayMonth = todayDate.getMonth(),
                  todayDay = todayDate.getDate(),
                  dateFieldVal = value;
                  console.log(dateFieldVal);
                  var formattedDate = $filter('date')(dateFieldVal,'yyyy-MM-dd');                  
                  console.log(formattedDate);

              /*var isValid = (value.length === $scope.ngLength);
              ngModel.$setValidity($attrs.ngModel, isValid);*/
          });
        } 
    }
  }])
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 7

您不需要指令,您可以:

<input type="date" max="{{minAge | date:'yyyy-MM-dd'}}"/>
Run Code Online (Sandbox Code Playgroud)

而你的控制器:

  var today = new Date();
  var minAge = 18;
  $scope.minAge = new Date(today.getFullYear() - minAge, today.getMonth(), today.getDate());
Run Code Online (Sandbox Code Playgroud)

这是一个吸烟者