ng-pattern допускает символ '+', когда регулярное выражение ограничивает до цифр

0

Я использую regex/^ [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 (не должно быть правдой)

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

  • 1
    Используйте type="text"
  • 0
    @ WiktorStribiżew Почему он не может работать с type = "number" ?? В браузерах type = "text" пользователи могут вводить произвольные символы.
Показать ещё 1 комментарий
Теги:
ng-pattern
angularjs-ng-pattern

2 ответа

0

Если вы хотите заставить шаблон работать, вам нужно установить атрибут type в text. Поскольку вы также хотите, чтобы пользователи onkeypress только цифры в поле ввода, добавьте проверку 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.

-1

Вы можете просто использовать:

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

Не устанавливая тип ввода на номер (по умолчанию это текст, и он должен работать нормально).

Здесь JSFiddle: https://jsfiddle.net/3ju3b2tu/1/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню