AngularJS只允许数字输入字段

时间:2017-04-29 17:04:45

标签: javascript angularjs ng-pattern

无法理解如何添加将所有无效条目标记为无效的ng-pattern。

我试过使用这个"/^(0|\-?[1-9][0-9]*)$/ 它可以很好地过滤掉0.1或甚至0123之类的数字,这些数字无效(并且不会被/^-?[0-9][^\.]*$/过滤掉,在某些类似问题中被视为正确答案)。

但实际上并没有过滤掉“+3”和“1”之类的数字。 (正则表达式似乎是正确的,并且不允许这些值,我试图在regex101.com上检查它)如果您使用我在此处列出的ng-patterns之一,请尝试在输入字段中输入+ N.你会发现它是有效的。 (可能是那个模型将包含3& 1而不是+3& 1.但我会将输入标记为无效,直到用户输入实数整数)

希望有人遇到同样的问题。

顺便提一下,其中一个可能的解决方案是创建一个阻止输入“。”的指令。和“+”,但我想知道是否有可能用ng-pattern解决这个问题。

1 个答案:

答案 0 :(得分:0)

试试这个ng-pattern="/^[1-9]\d*$/"只允许整数:



angular
  .module('App', [])
  .controller('DefaultController', ['$scope', '$log', function ($scope, $log) {
    $scope.logNumber = function() {
      $log.log($scope.num);
    };
  }]);

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.10/angular.min.js"></script>

<div ng-app="App">
  <div class="container" ng-controller="DefaultController">
    <form name="form">
      <input type="number" ng-pattern="/^[1-9]\d*$/" ng-change="logNumber()" ng-model="num" id="num"  name="num">
      <hr>
      Input valid? = <code>{{ form.num.$valid }}</code>
    </form>
  </div>
</div>
&#13;
&#13;
&#13;