Я использую angularjs для проверки на стороне клиента в текстовом поле, где мне нужно вводить только буквенно-цифровые символы. Если текстовое поле оставлено пустым или введен небуквенно-цифровой символ, форма отправки отправляет «ложь» в JS, что желательно, но проблема в том, что он не передает сам небуквенно-цифровой символ (в области).
Файл JSP:
<form name="addressForm" method="post"
ng-submit="submitform(addressForm.$valid)" novalidate>
..
<input ng-model="address" type="text"
**ng-pattern**="/^[a-zA-Z0-9 ]*$/" required="true"/>
Файл JS:
$scope.submitform= function(isValid){
var inputAddr = $scope.address;
alert(inputAddr); //coming as undefined
...
Теперь, когда я ввожу буквенно-цифровой символ в поле ввода «адрес» в jsp, он выдает мне undefined при предупреждении об этом в JS (вероятно, из-за шаблона, который фильтрует символ, не являющийся буквенно-цифровым). Если я удаляю ng-шаблон, он передает submitForm, передает «true», как будто каждый ввод «как ожидалось». Причина, по которой я хочу получить доступ к $scope.address, состоит в том, чтобы проверить, оценить и отобразить разные сообщения об ошибках для «пустой» и «не буквенно-цифровой» проверки.
Любая помощь приветствуется!
ng-pattern
, он просто оставит модель неопределенной, пока значение не совпадает. Нам пришлось прекратить его использование, потому что мы столкнулись с точно такой же проблемой. Наше решение состояло в том, чтобы выполнить проверку в контроллере, но я не думаю, что это хорошее решение. Механизм проверки формы Angular, на мой взгляд, сломан до такой степени, что он более или менее совершенно бесполезен. - person ivarni   schedule 24.04.2014