2016-08-24 8 views
0

私は数字だけを受け入れるべきフィールドを持っています、私は通常、私たちはinput type="number"を知っています。数値だけを許容するための角度の最良の方法は何ですか?入力フィールドの数値のみを受け入れます。角度の道(html5なし)

+1

を行うことができます

・ホープ[angularjsを:数字のみをテキストボックスに入力することができます](http://stackoverflow.com/questions/16091218/angularjs-allows-テキストボックスに入力する数字のみ) – Oyeme

+0

[this](http://codepen.io/apuchkov/pen/ILjFr) – gianlucatursi

+0

をチェックすると、指示...機能を使用することができます。 ..パターン.... –

答えて

1

あなたが以下に与えられる指令に類似を作成し、おそらくあなたはこの単純なディレクティブを利用することができます属性

.directive('validNumber', function() { 
     return { 
      restrict: 'A', 
      require: '?ngModel', 
      link: function (scope, element, attrs, ngModelCtrl) { 

       //8:"BACKSPACE",9:"TAB",17:"CTRL",18:"ALT",37:"LEFT", 
       //38:"UP",39:"RIGHT",40:"DOWN",45:"INSERT",46:"DELETE", 
       //48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9", 67:"C",86:"V", 
       //96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9", 
       //109:"-",110:".",144:"NUMLOCK", 189:"-",190:".", 

       var keyCode = [8, 9, 17, 37, 38, 39, 40, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 67, 86, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 109, 110, 144, 189, 190]; 
       element.bind("keydown", function (event) { 
        if ($.inArray(event.which, keyCode) == -1) { 
         scope.$apply(function() { 
          scope.$eval(attrs.validNumber); 
          event.preventDefault(); 
         }); 
         event.preventDefault(); 
        } 

       }); 
      } 
     }; 
    }); 
0

としてHTML要素にそれを使用することができます。..

// ---Directive for Digit restriction on input fields.--------- 

myApp.directive('numbersOnly', function() { 
return { 
    require : 'ngModel', 
    link : function(scope, element, attrs, modelCtrl) { 
     modelCtrl.$parsers.push(function(inputValue) { 
      // if the input is 'undefined' 
      if (inputValue == undefined) 
       return '' 
      var transformedInput = inputValue.replace(/[^0-9]/g, ''); 
      if (transformedInput != inputValue) { 
       modelCtrl.$setViewValue(transformedInput); 
       modelCtrl.$render(); 
      } 

      return transformedInput; 
     }); 
    } 
}; 

}) ;

とHTMLで

、あなたが

<input type="numbers" numbers-only ng-model="numberModel"> 

ので、理想的には、この入力フィールドは、データとして数字を使用してモデルを更新するように指示を宣言することができます。..

が、ここで何が起こっています、文字が押されるたびに、指示文numbersOnlyによって監視されています。ここでは数字だけを入力します。これは...の可能性のある重複 乾杯

関連する問題