2017-08-14 76 views
1

在我的角度,材料的应用程序我有一个字段校验:角材料输入号码更改格式

<input type="number" ng-model="myValue" 
     name="myValue" 
     min="0" max="100" 
     ng-pattern="/^[0-9]\d*(\.\d+)?$/" required> 

它工作正常。但现在我需要它来允许用户键入0.75并获得0.75

所以现在的问题不是如何应用我的过滤器:角料ng-patterntype="number"验证之前

if(myValue.substring(0,1) == "."){ 
    myValue = "0" + myValue; 
} 

回答

1

你可以写一些指令与$filter$formatters$parsers

app.directive('parser', ['$filter', 
    function($filter) { 
     return { 
      restrict:'A', 
      require: 'ngModel', 
      link: function(scope, element, attrs, ctrl) { 

       ctrl.$formatters.unshift(function (a) { 
       return $filter('myFilter')(ctrl.$modelValue) 
      }); 

      ctrl.$parsers.unshift(function (viewValue) { 
      element[0].value = $filter('myFilter')(element[0].value); 
      return element[0].value; 
      }); 
      } 
     }; 
    } 
]); 

app.filter('myFilter', [ 
    function() { 
     return function(input) { 

      if(input && input.substring(0,1) == "."){ 
      input = "0" + input; 
      } 
      return input; 
     }; 
    } 
]); 

DEMO Plunkr


但是你不能使用类型number因为我记得.不支持,不解析为整数

希望它会给你方向

+0

是的,你是对的,输入[编号]有非数字输入问题:(如果我改为文本类型,然后最大值,最小值 - 不起作用 – Arti

+0

@Arti您可以编写自定义验证 –