AngularJS - ng-шаблон в форме, в котором отсутствуют определенные специальные символы, такие как знак доллара - PullRequest
0 голосов
/ 05 июня 2019

Я пишу приложение с AngularJS 1.5.Я пытаюсь написать функцию, в которой пользователь может проверить свой пароль в приложении, и я использую ng-сообщения, чтобы попытаться проверить форму.

В My from есть 2 поля: пароль и подтверждение пароля.2 условия проверки: оба пароля требуются, и пароли должны совпадать.

Проблема, с которой я столкнулся, состоит в том, что сопоставление с образцом не удается выполнить для нескольких специальных символов.Не подходит для знака доллара, но не для всех специальных символов.Мне нужно, чтобы он работал для всех символов.

Вот мой JSFiddle: http://jsfiddle.net/aubz88/gm0obnqf/69/

Фрагмент кода:

  <div>
    <label 
      class="item" 
      ng-class="{ 'has-error' : vm.verifyPassword.password.$invalid && (vm.verifyPassword.$submitted || vm.verifyPassword.$dirty) }">
    <span class="input-label">Password</span>
    <input
      id="password"
      type="password"
      name="password"
      ng-model="vm.data.password"
      placeholder="password"
      required>
    </label>
  </div>

1 Ответ

1 голос
/ 06 июня 2019

Проблема в том, что эта строка в вашем JSFiddle передается vm.data.password (в виде строки) в ng-pattern.

ng-pattern="vm.data.password"

В соответствии с документом раздела Аргументы ngPattern https://docs.angularjs.org/api/ng/directive/ngPattern#ngPattern-arguments:

"Выражение AngularJS, которое должно преобразовываться в RegExp или String, анализируемые в RegExp, или литерал RegExp. "

Итак, AngularJS анализирует ваш ввод в регулярном выражении, поэтому некоторые символы перестали работать, например, $ (знак доллара), так как $ является зарезервированным ключевым словом в регулярном выражении.

...