如何防止输入类型=“数字”取e

时间:2016-12-12 11:28:19

标签: javascript html angularjs meteor

我有一个type =“text”的文本字段但它允许输入e ..我甚至想要防止这种情况发生我们怎么能这样做?

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

有人可以帮忙!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以尝试最简单的方式:ng-pattern

tryCatch