2016-08-03 11 views
0

電子メール形式(プロジェクト内のすべての検証)用のディレクティブを作成したいと考えています。Angular JSで電子メール形式のカスタムディレクティブを作成する方法

まず私は、コード

<input type="email" class="form-control" name="UserName" ng-model="userDetail.UserName" placeholder="Enter email" ng-pattern="/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/" required> 

の下にこの作業を使用しているしかし、私はプロジェクト全体使用したメールアドレスにこの"/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/"を宣言する必要があります。

今後、メールアドレスのパターンを変更する必要があります。だから、私はプロジェクトのすべてのフィールドパターンを変更した後、プロジェクトのすべての電子メールフィールドを見つける必要があります。しかし私の目標 - このパターンをプロジェクトのためにどのようにグローバルに行うことができるか。

カスタムディレクティブで可能ですと思います。

私の質問です。どのように私は電子メールのパターンの指示を作成することができます。

答えて

1
app.directive('validEmail', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, element, attrs, control) { 
      control.$parsers.push(function (viewValue) { 
       var newEmail = control.$viewValue; 
       control.$setValidity("invalidEmail", true); 
       if (typeof newEmail === "object" || newEmail == "") return newEmail; // pass through if we clicked date from popup 
       if (!newEmail.match(/^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;,.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$/)) 
        control.$setValidity("invalidEmail", false); 
       return viewValue; 
      }); 
     } 
    }; 
}); 
関連する問題