#angularjs #regex
#angularjs #регулярное выражение
Вопрос:
Почему мое регулярное выражение не запускается? Первое сообщение об ошибке «Пожалуйста, введите значение longtitude» отображается, когда ничего не введено. Если я ввел явно неправильное значение для «longtitude», сообщение об ошибке не отображается.
<div class="row">
<div class="col span-1-of-3">
<label for="name">Longtitude</label>
</div>
<div class="col span-2-of-3">
<input type="text" ng-pattern="/^[- ]?(180(.0 )?|((1[0-7]d)|([1-9]?d))(.d )?)$/" ng-model="report.lon" name="lon" id="longtitude" placeholder="Enter the longtitude" required />
</div>
<div ng-messages="submitReport.lon.$error" ng-if="submitReport.lon.$dirty">
<div ng-message="required">Please enter the longtitude</div>
<div ng-message="lon">Your longtitude is invalid</div>
</div>
<div ng-show="submitReport.lon.$error.pattern" ng-if="submitReport.lon.$dirty">
<div ng-message="required">Please enter the longtitude</div>
<div ng-message="lon">Your longtitude is invalid</div>
</div>
</div>
Ответ №1:
Это работает для меня: https://plnkr.co/edit/WPjGeylGESDexh7Q6UKJ?p=preview
Также обратите внимание, что ваше написание долготы неверно.
Редактировать
Проблема в коде заключается в том, что
<div ng-message="lon">Your longitude is invalid</div>
должно быть
<div ng-message="pattern">Your longitude is invalid</div>
Комментарии:
1. Хотя ваше значение равно true / false, сообщения об ошибках не отображаются, поэтому у вас та же проблема.
2. Справедливый вызов. Я не включал библиотеку сценариев для ngMessages и не включал ее в массив модуля. Я обновил plunk, чтобы он работал полностью
3. Как очень странно. Пока я могу получить только сообщение, чтобы показать, что
<div ng-show="submitReport.lon.$valid == false">Your longitude is invalid</div>
в контроллере нет ничего странного, всего пара функций. Имя формы тоже правильное. Я подумаю об этом немного дольше, прежде чем публиковать больше кода.4. Включили ли вы библиотеку ngMessages в модуль — angular.module(‘ngPatternExample’, [‘ngMessages’])? Похоже, что библиотека вообще не работает, если вам нужно использовать ng-show. Это ядро Angular
5. И связан с отдельной <script> library in the HTML head?