繁体   English   中英

AngularJS仅允许数字输入字段中的整数

[英]AngularJS allow only integer numbers in number input field

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

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

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

希望有人有同样的问题。

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

试试这个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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM