2017-08-14 52 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您可以編寫自定義驗證 –