anglejs-ngMessagesと検証が期待どおりに機能しない

ニック

アプリのユーザー登録ページに検証を追加し、ngMessages組み込みのangularjs検証を使用しようとしています

パスワードの照合と一般的なパターンで奇妙な動作が発生しています。

パスワードマッチングのコードは次のとおりです。

<span>Password (6 to 16 character)</span>
          <span class="item item-input">
                    <input type="password"
                           ng-model="userRegistration.password"
                           placeholder="password"
                           name="password"
                           ng-minlength="6"
                           ng-maxlength="16"
                           required
                           ng-class="{'invalid-input': userRegistrationForm.password.$touched && userRegistrationForm.password.$invalid }">
                </span>
          <!-- Form validation messages -->
          <div role="alert" class="error-message" ng-messages="userRegistrationForm.password.$error" ng-show="userRegistrationForm.password.$touched">
            <p ng-message="required">This field is required</p>
            <p ng-message="minlength">This field is too short</p>
            <p ng-message="maxlength">This field is too long</p>
          </div>
          <span>Confirm Password</span>
          <span class="item item-input">
                    <input type="password"
                           placeholder="confirm password"
                           ng-model="userRegistration.passwordConfirmation"
                           name="confpass"
                           ng-minlength="6"
                           ng-maxlength="16"
                           ng-pattern="/^{{userRegistration.password}}$/"
                           required
                           ng-class="{'invalid-input': userRegistrationForm.confpass.$touched && userRegistrationForm.confpass.$invalid }">
                </span>
          <!-- Form validation messages -->
          <div role="alert" class="error-message" ng-messages="userRegistrationForm.confpass.$error" ng-show="userRegistrationForm.confpass.$touched">
            <p ng-message="required">This field is required</p>
            <p ng-message="pattern">Password not matching!</p>
          </div>

問題は、パスワードが一致しても、一致していないことを示すエラーが表示されたままになり、なぜこれが行われているのか理解できないことです。

期待どおりに動作しないパターンの別の例は、以下のコードにあります。

<span>System ID</span>
          <span class="item item-input">
                    <input type="text"
                           ng-model="userRegistration.id"
                           placeholder="system id"
                           name="systemID"
                           ng-minlength="6"
                           ng-maxlength="6"
                           pattern="/:/"
                           required
                           ng-class="{'invalid-input': userRegistrationForm.systemID.$touched && userRegistrationForm.systemID.$invalid }">
                </span>
          <!-- Form validation messages -->
          <div role="alert" class="error-message" ng-messages="userRegistrationForm.systemID.$error" ng-show="userRegistrationForm.systemID.$touched">
            <p ng-message="required">This field is required</p>
            <p ng-message="pattern">Colons not required!</p>
            <p ng-message="minlength">This field is too short</p>
            <p ng-message="maxlength">This field is too long</p>
          </div>

入力にコロンが追加されているかどうかを確認し、追加されている場合は表示してエラーを表示する必要があります。上記のように、問題は、コロンがない場合でも、メッセージが表示されたままになることです。

何が足りないのですか?私は明らかに使用ng-patternng-messagesていて間違っていますが、理由がわかりません。

どんな助けでも本当にありがたいです。

ここに両方の​​例があるCodepen:http://codepen.io/NickHG/pen/NNZYwK?editors = 1010

ありがとう

thepio

これをng-messagesで機能させるために、少し異なるアプローチを使用しました。次のようなカスタムディレクティブを作成しました。

.directive('compareTo', function() {
  return {
    require: "ngModel",
    scope: {
      otherModelValue: "=compareTo"
    },
    link: function(scope, element, attributes, ngModel) {

      ngModel.$validators.compareTo = function(modelValue) {
        return modelValue == scope.otherModelValue;
      };

      scope.$watch("otherModelValue", function() {
        ngModel.$validate();
      });
    }
  };

});

そして、次のようにエラーを表示します。

<div role="alert" class="error-message" 
ng-messages="userRegistrationForm.conf.$error" 
ng-show="userRegistrationForm.conf.$touched">
  <p ng-message="required">This field is required</p>
  <p ng-message="compareTo">Password not matching!</p>
</div>  

詳細およびデモについては、以下のリンクを参照してください。

Codepenデモ:http://codepen.io/thepio/pen/rLNBWr?editors = 1010

コメントに基づいて編集:

ng-patternを使用した例を次に示します(ディレクティブは不要):http//codepen.io/thepio/pen/zBYOPy?editors = 1010

ng-change最初の入力に関数を設定し、変更されたときにコントローラーに正規表現を設定します。次に、それをng-pattern確認入力のにバインドしng-messagesそれに応じて表示します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

angleJSのng-listが期待どおりに機能していません

分類Dev

angleJSでの日付ピッカーの検証が機能しない

分類Dev

anglejs $ rootScope.watchが機能しない

分類Dev

anglejs:gettextがngSwitchで機能しない

分類Dev

anglejsショーが機能しない

分類Dev

Laravel-dateformat検証が期待どおりに機能しない

分類Dev

cp-検証が期待どおりに機能しない

分類Dev

jQuery検証が期待どおりに機能しない

分類Dev

anglejsとng-bind-htmlが正しく機能しない

分類Dev

anglejsフィルター機能が機能しない

分類Dev

anglejsで応答がない

分類Dev

javascriptを使用した10進検証が期待どおりに機能しない

分類Dev

Laravel:フォームの検証が期待どおりに機能しない

分類Dev

Laravel5.8.17-検証画像が期待どおりに機能しない

分類Dev

AngularJSでのフォーム検証が期待どおりに機能しない

分類Dev

anglejs $ setPrestineが一貫して機能しない

分類Dev

anglejs:ng-クリックが機能しない

分類Dev

anglejsの二重中括弧が機能しない

分類Dev

anglejsの二重中括弧が機能しない

分類Dev

anglejs $ location.path.replaceが機能しない

分類Dev

anglejs送信ボタンが機能しない

分類Dev

VirtualizedSelectでFormikとyupフォームの検証が期待どおりに機能しない

分類Dev

anglejsとASP.NETMVCの使用

分類Dev

anglejsを使用したjson入力検証

分類Dev

angleJSで日付がnull

分類Dev

配列検索が期待どおりに機能しない

分類Dev

配列検索が期待どおりに機能しない

分類Dev

Laravel 5 検索が期待どおりに機能しない

分類Dev

Excelの検索と置換が期待どおりに機能しない

Related 関連記事

  1. 1

    angleJSのng-listが期待どおりに機能していません

  2. 2

    angleJSでの日付ピッカーの検証が機能しない

  3. 3

    anglejs $ rootScope.watchが機能しない

  4. 4

    anglejs:gettextがngSwitchで機能しない

  5. 5

    anglejsショーが機能しない

  6. 6

    Laravel-dateformat検証が期待どおりに機能しない

  7. 7

    cp-検証が期待どおりに機能しない

  8. 8

    jQuery検証が期待どおりに機能しない

  9. 9

    anglejsとng-bind-htmlが正しく機能しない

  10. 10

    anglejsフィルター機能が機能しない

  11. 11

    anglejsで応答がない

  12. 12

    javascriptを使用した10進検証が期待どおりに機能しない

  13. 13

    Laravel:フォームの検証が期待どおりに機能しない

  14. 14

    Laravel5.8.17-検証画像が期待どおりに機能しない

  15. 15

    AngularJSでのフォーム検証が期待どおりに機能しない

  16. 16

    anglejs $ setPrestineが一貫して機能しない

  17. 17

    anglejs:ng-クリックが機能しない

  18. 18

    anglejsの二重中括弧が機能しない

  19. 19

    anglejsの二重中括弧が機能しない

  20. 20

    anglejs $ location.path.replaceが機能しない

  21. 21

    anglejs送信ボタンが機能しない

  22. 22

    VirtualizedSelectでFormikとyupフォームの検証が期待どおりに機能しない

  23. 23

    anglejsとASP.NETMVCの使用

  24. 24

    anglejsを使用したjson入力検証

  25. 25

    angleJSで日付がnull

  26. 26

    配列検索が期待どおりに機能しない

  27. 27

    配列検索が期待どおりに機能しない

  28. 28

    Laravel 5 検索が期待どおりに機能しない

  29. 29

    Excelの検索と置換が期待どおりに機能しない

ホットタグ

アーカイブ