2016-05-07 7 views
0

私はカスタム入力コントロールを作成し、ぼかしで特定の検証を実行しようとしました。 しかし、それは期待どおりに実行していません。私の代わりにjQueryの特定element.bind(「ブラー」)AngularJSカスタム入力コントロールが検証を実行していません

template: '<input type="text" ng-blur="performvalidation()">', 

Complete fiddle here

を使用しての以下のようなテンプレートを使用したいガイドまたは私が間違っているのものを修正してください。ありがとう。

+0

より多くのコードを追加してください。それで、あなたがしようとしていることを理解することができます。 – Ashot

答えて

1

カスタムバリデーターを作成する場合は、それらをngModelControllerの$ validatorsフィールドに追加する必要があります。例えばユーザーが入力フィールドから離れてクリックするまで、あなたがエラーを表示したくない場合は、テンプレートは、あなただけの入力要素

<input ng-model="strongSecret" strong-secret name="strongSecret"/> 

上でそれを使用する必要があります代わりに、あなたの指示を与えるのも

angular.module('app').directive('strongSecret', function() { 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function(scope, element, attr, ctrl) { 
     ctrl.$validators.uppercaseValidator = function(value) { 
     return /[A-Z]/.test(value); 
     } 

     ctrl.$validators.numberValidator = function(value) { 
     return /[0-9]/.test(value); 
     } 

     ctrl.$validators.sixCharactersValidator = function(value) { 
     return value.length === 6; 
     } 
    } 
    }; 
}); 

あなたはこの

<ul ng-if="sampleForm.strongSecret.$touched" class="error-msgs" ng-messages="sampleForm.strongSecret.$error"> 
... 
</ul> 

ワーキングjsFiddleを行うことができます:https://jsfiddle.net/e81kee9z/2/