0

我正在使用正则表达式 /^[0-9]+$/ 将文本框的输入限制为仅接受数字。它工作正常,但是当类型像 +124 时,它也不会将文本框设置为无效。

<form name="myForm" novalidate>
  <input type="number" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" />
  <h3>Valid Status : {{myForm.age.$valid}}</h3>
</form>

输入:123 输出:myForm.age.$valid - true

输入:-123 输出:myForm.age.$valid - false

输入:+123 输出:myForm.age.$valid - true(不应该为 true)

https://plnkr.co/edit/3OVE6qiWgJozUb3hyFQ5?p=preview

4

2 回答 2

0

如果要使模式起作用,则需要将type属性设置为text. 由于您还想让用户在输入字段中onkeypress输入数字,因此添加一个验证:

<input type="text"  onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" ng-model="age" name="age" ng-pattern="/^[0-9]+$/" />

实际上,那时您甚至不需要 ng-pattern 正则表达式。

于 2016-07-28T11:00:33.870 回答
-1

您可以使用:

ng-pattern="/^[0-9]+$/"

没有将输入类型设置为数字(默认为文本,它应该可以正常工作)。

这里 JSFiddle:https ://jsfiddle.net/3ju3b2tu/1/

于 2016-07-28T11:15:57.450 回答