@H_404_1@
我有一个简单的文本输入,我只想允许浮点数和整数(注意:玉)
input.form-control(type="text",ng-model='usd',ng-pattern="nums",ng-change='convert_to_btc()',placeholder="USD")
然而它不起作用,我总是可以在输入中插入任何字符(我是否需要做更多才能显示某些内容?例如,如果它不正确则需要红色边框?或者应该只是那些字符甚至无法输入?)
模式是一个正则表达式,因此不是一个字符串,所以应该没问题???
这是控制器:
app.controller("AppCtrl",function AppCtrl($scope,$http,$interval ) { //lots of other stuff $scope.nums = /^\-?\d+((\.|\,)\d+)?$/; //note no string,it's a regex }
这是生成的HTML.这可能是问题吗?生成的HTML实际上有一个字符串,而不是正则表达式!?
<input type="text" ng-model="usd" ng-pattern="/^\-?\d+((\.|\,)\d+)?$/" ng-change="convert_to_btc()" placeholder="USD" class="form-control ng-dirty ng-valid-parse ng-touched ng-invalid ng-invalid-pattern">
解决方法
我希望这是你想要做的.
请看下面的链接
http://plnkr.co/edit/BGzLbQHy0ZtHYmom8xA3
<!DOCTYPE html> <html ng-app=""> <head> <script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.3.13/angular.js" data-semver="1.3.13"> </script> <style> .ng-invalid-pattern { border:1px solid #f00; } </style> </head> <body> <p>Hello</p> <form name='myform'> <input type="text" name='ip' ng-model="usd" ng-pattern="/^\-?\d+((\.|\,)\d+)?$/" ng-change="convert_to_btc()" placeholder="USD"/> <p ng-show='myform.ip.$invalid'>Error</p> </form> </body> </html>