2017-06-09 18 views
-2

これは私のコードの短いバージョンです。anglejsに1小数点を付けてください

<div> 
    <input type="number" name="content" md-auto-focus 
    ng-model="vm.model.content" 
    ng-required="{{vm.required === null ? true : vm.required}}" 
    ng-attr-ng-max="{{vm.max}}" ng-attr-ng-min="{{vm.min}}"> 
    <div ng-message-exp="['required','min']" ng-if="vm.min != null"> 
    <span data-translate translate-value-length="{{vm.min}}">min</span> 
    </div> 
    <div ng-message="required" ng-if="vm.min == null"> 
    <span data-translate>required</span> 
    </div> 
    <div ng-message="number"> 
    <span data-translate>numberOnly</span> 
    </div> 
    <div ng-message="max"> 
    <span data-translate translate-value-length="{{vm.max}}">max</span> 
    </div> 
</div> 

あなたがここに見ることができるよう、

https://regex101.com/r/fvPBTW/1 私は同じ正規表現を使用します。

それは44.44、44、

ではなく44、44.444,44.44.44、44.44を受け入れます。

個数機能のためと思います。

しかし、私は入力された数字と数字の後ろに数字が1つだけになりたい。

ので、私は

<input type="text" name="content" md-auto-focus 

をテキストに番号を変更したが、今回はそれが文字列を行くと小数を保存しません。

+0

だからあなたの問題は、正確に何ですか?現在無効な値を入力できるようになっていますが、停止したいのですか? – epascarello

+0

可能であれば、許可しないでください。小数点以下1桁のみを許可します。そうでない場合は、小数点以下2桁まで – vegan

答えて

0

コードの短いバージョンでは不十分です。私はあなたが過去にしたいことをすることができました。以下は私がそれを達成した方法です。

var app = angular.module('jmApp', []); 
 

 
    app.controller('MainCtrl', function($scope) { 
 
    }); 
 

 
    app.directive('validNumber', function() { 
 
     return { 
 
     require: '?ngModel', 
 
     link: function(scope, element, attrs, ngModelCtrl) { 
 
      if(!ngModelCtrl) { 
 
      return; 
 
      } 
 

 
      ngModelCtrl.$parsers.push(function(val) { 
 
      if (angular.isUndefined(val)) { 
 
       var val = ''; 
 
      } 
 
      
 
      var clean = val.replace(/[^-0-9\.]/g, ''); 
 
      var negativeCheck = clean.split('-'); 
 
\t \t \t var decimalCheck = clean.split('.'); 
 
      if(!angular.isUndefined(negativeCheck[1])) { 
 
       negativeCheck[1] = negativeCheck[1].slice(0, negativeCheck[1].length); 
 
       clean =negativeCheck[0] + '-' + negativeCheck[1]; 
 
       if(negativeCheck[0].length > 0) { 
 
       \t clean =negativeCheck[0]; 
 
       } 
 
       
 
      } 
 
       
 
      if(!angular.isUndefined(decimalCheck[1])) { 
 
       decimalCheck[1] = decimalCheck[1].slice(0,1); 
 
       clean =decimalCheck[0] + '.' + decimalCheck[1]; 
 
      } 
 

 
      if (val !== clean) { 
 
       ngModelCtrl.$setViewValue(clean); 
 
       ngModelCtrl.$render(); 
 
      } 
 
      return clean; 
 
      }); 
 

 
      element.bind('keypress', function(event) { 
 
      if(event.keyCode === 32) { 
 
       event.preventDefault(); 
 
      } 
 
      }); 
 
     } 
 
     }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="jmApp"> 
 
    <h2>Validate Price</h2> 
 
    <div ng-controller="MainCtrl"> 
 

 
     <input type="text" ng-model="salary" valid-number /> 
 
    </div> 
 
</div>

関連する問題