Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body ng-controller="ctrl">
  <span>Mininum Lenght: </span>
  <input type="text" ng-model="config.min">
  
  <hr>
  <div ng-form="" name="myForm">
    <h2>A form</h2>
    <input type="text" name="input" ng-required="true" my-minlength="{{config.min}}" ng-model="inp">
    
    <pre>{{ myForm.input.$error | json }}</pre>
  </div>
</body>
</html>
 
var app = angular.module('app',[]);
app.controller('ctrl',function($scope){
  $scope.config = {
    min : 3
  };
});
app.directive('myMinlength',function(){
  return {
    require: 'ngModel',
    link: function(scope,elm,attr,ngModel){
      
      var minlength = 0;
     
      var minLengthValidator = function(value){     
        var validity = ngModel.$isEmpty(value) || value.length >= minlength;
        ngModel.$setValidity('minlength',  validity);
        return validity ? value : undefined;
      };
            
      attr.$observe('myMinlength', function(val){
         minlength = parseInt(val,10);
         minLengthValidator(ngModel.$viewValue);
      });
      
      ngModel.$parsers.push(minLengthValidator);
      ngModel.$formatters.push(minLengthValidator);
    } 
  };
});
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers