2016-12-12 3 views
1

У меня было текстовое поле типа = «текст», но оно позволяет вводить e. Я даже хочу предотвратить это, как мы можем это сделать?Как предотвратить ввод типа = «число», принимающее e

<input class="form-control" maxlength="12" ng-model="$ctrl.NumberInput" type="number" 
    min="0" required focus> 

Может кто-то помочь!

+0

@Rob Если я скопировать и вставить его еще позволяя е дер –

ответ

2

Вы можете использовать следующую директиву, которая будет ограничивать только для чисел

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('-'); 
     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) { 
       clean =negativeCheck[0]; 
      } 

     } 

     if(!angular.isUndefined(decimalCheck[1])) { 
      decimalCheck[1] = decimalCheck[1].slice(0,2); 
      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(); 
     } 
     }); 
    } 
    }; 
}); 

DEMO

Если вы не хотите использовать Используйте директиву, ng-pattern

<input type="text" ng-model="$ctrl.numberInput" ng-pattern="/[^0-9]/g" required /> 

DEMO

+0

ли дер в любом случае без директивы? –

+0

@HVarma проверить обновленный ответ – Sajeetharan

+0

Он все еще позволяет e в вашем втором демо-ритуале>? –

2

вы можете попробовать самый простой способ: ng-pattern

<input type="text" ng-model="$ctrl.numberInput" ng-pattern="/^\d+$/" required /> 
Смежные вопросы