From 88b92a19ca40888e245191b8fdb1ff579d7b2deb Mon Sep 17 00:00:00 2001 From: Anderson Rocha Date: Fri, 8 Jan 2016 12:16:22 -0200 Subject: [PATCH] Improvement custom validate message I made an improvement in the function 'updateValidationMessage' where now it sweeps errors and search for x-message in the corresponding elemente. This allows custom messages to any validation error. Ex: --- src/angular-validator.js | 61 ++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/src/angular-validator.js b/src/angular-validator.js index 0ac0e0d..e51edd4 100644 --- a/src/angular-validator.js +++ b/src/angular-validator.js @@ -209,30 +209,43 @@ angular.module('angularValidator').directive('angularValidator', ['$injector', ' // Only add validation messages if the form field is $dirty or the form has been submitted - if (scopeElementModel.$dirty || (scope[element.form.name] && scope[element.form.name].submitted)) { - - if (scopeElementModel.$error.required) { - // If there is a custom required message display it - if ("required-message" in element.attributes) { - angular.element(element).after(generateErrorMessage(element.attributes['required-message'].value)); - } - // Display the default required message - else { - angular.element(element).after(generateErrorMessage(defaultRequiredMessage)); - } - } else if (!scopeElementModel.$valid) { - // If there is a custom validation message add it - if ("invalid-message" in element.attributes) { - angular.element(element).after(generateErrorMessage(element.attributes['invalid-message'].value)); - } - // Display error message provided by custom service - else if (formInvalidMessage) { - angular.element(element).after(generateErrorMessage(formInvalidMessage.message(scopeElementModel, element))); - } - // Display the default error message - else { - angular.element(element).after(generateErrorMessage(defaultInvalidMessage)); + if (scopeElementModel.$dirty || scopeForm.submitted) { + + if (!scopeElementModel.$valid) { + // Sweeps errors search by correspondent attribute 'x-message', where 'x' is error name + // This allows custom messages to any validation error. + for (var error in scopeElementModel.$error) { + if (scopeElementModel.$error.hasOwnProperty(error) && scopeElementModel.$error[error]) { + var messageAttr = error + "-message"; + + // Display any error message correspondent + if (messageAttr in element.attributes) { + angular.element(element).after(generateErrorMessage(element.attributes[messageAttr].value)); + return true; + } + // Display default required error message + else if (messageAttr === "required-message") { + angular.element(element).after(generateErrorMessage(defaultRequiredMessage)); + return true; + } + // Display invalid error message + else if ("invalid-message" in element.attributes) { + angular.element(element).after(generateErrorMessage(element.attributes['invalid-message'].value)); + return true; + } + // Display error message provided by custom service + else if (formInvalidMessage) { + angular.element(element).after(generateErrorMessage(formInvalidMessage.message(scopeElementModel, element))); + return true; + } + // Display the default error message + else { + angular.element(element).after(generateErrorMessage(defaultInvalidMessage)); + return true; + } + } } + } } } @@ -286,4 +299,4 @@ angular.module('angularValidator').directive('angularValidator', ['$injector', ' } }; } -]); \ No newline at end of file +]);