регулярное выражение angular не проверяется в поле ввода

#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?