これは、ng-messages(angular 1.3で利用可能)とカスタムディレクティブを使用した例です。
検証メッセージは、ユーザーが初めて入力フィールドを離れたときにぼかしに表示されますが、値を修正すると、検証メッセージはすぐに削除されます(ぼかしではなくなります)。
JavaScript
myApp.directive("validateOnBlur", [function() {
var ddo = {
restrict: "A",
require: "ngModel",
scope: {},
link: function(scope, element, attrs, modelCtrl) {
element.on('blur', function () {
modelCtrl.$showValidationMessage = modelCtrl.$dirty;
scope.$apply();
});
}
};
return ddo;
}]);
HTML
<form name="person">
<input type="text" ng-model="item.firstName" name="firstName"
ng-minlength="3" ng-maxlength="20" validate-on-blur required />
<div ng-show="person.firstName.$showValidationMessage" ng-messages="person.firstName.$error">
<span ng-message="required">name is required</span>
<span ng-message="minlength">name is too short</span>
<span ng-message="maxlength">name is too long</span>
</div>
</form>
PS。モジュールにngMessagesをダウンロードして含めることを忘れないでください:
var myApp = angular.module('myApp', ['ngMessages']);