我在尝试将用户输入限制为数字时遇到了一个有趣的问题。
我的 HTML 看起来像这样:
<input name="activeDate" type="number" class="form-control" ng-model="account.tag.activeDate"></input>
...以及我的相关 Angular Controller 代码,如下所示(位于点击处理程序内部):
tag.activeDate = moment.utc().add(tag.activeDate, tag.tagDurationType).toISOString();
不幸的是,当我单击提交表单的按钮并调用单击处理程序时,我在控制台中收到此错误:
[ngModel:numfmt] Expected `2015-08-27T22:09:18.919Z` to be a number
看起来我的输入在提交时被检查,当它在我的 Controller 中转换为日期时。如何将用户输入限制为数字而不遇到这种情况?
最佳答案
使用ng-pattern="/^(\d)+$/"
- 这是简单的正则表达式
var app = angular.module('num', []);
app.controller('numCtrl', function($scope, $http){
$scope.digits = {};
});
angular.bootstrap(document.body, ['num']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-controller="numCtrl">
<form class="digits" name="digits" ng-submit="getGrades()" novalidate >
<input type="text" placeholder="digits here plz" name="nums" ng-model="nums" required ng-pattern="/^(\d)+$/" />
<p class="alert" ng-show="digits.nums.$error.pattern">Numbers only, please.</p>
<br>
<input class="btn" type="submit" value="Do it!" ng-disabled="!digits.$valid" />
</form>
</body>
关于javascript - 提交前验证输入类型 ="number",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255533/