ng-pattern допускает символ '+', когда регулярное выражение ограничивает до цифр
Я использую регулярное выражение /^[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)
2 ответа
Если вы хотите, чтобы шаблон работал, вам нужно установить 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.
Вы можете просто использовать:
ng-pattern="/^[0-9]+$/"
Без установки типа ввода на число (по умолчанию это текст, и он должен работать нормально).
Вот JSFiddle: https://jsfiddle.net/3ju3b2tu/1/