Skip to content

Commit fa1ec0d

Browse files
scottadamsmithhueitan
authored andcommitted
Added support for dynamic default messages using functions. (#198)
* Added support for dynamic default messages using functions. * Replaced validator directive updates lost during conflict resolution. * Updated ternary based on jshint warning and rebuilt dist * Added tests for dynamic default messages * Added dynamic default message documentation
1 parent efa301e commit fa1ec0d

5 files changed

Lines changed: 105 additions & 9 deletions

File tree

API.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,29 @@ API
3737
<input type="text" name="number" ng-model="form.number" validator="number"/>
3838
```
3939

40+
### **Use Custom Default Valid/Invalid Message** <br/>
41+
You can customize the default valid/invalid message that will be automatically placed next to your input element.
42+
43+
```html
44+
<script>
45+
$validationProvider.setDefaultMsg({
46+
minlength: {
47+
error: function (element, attrs, param) {
48+
return 'A minimum of ' + param + ' characters is required.';
49+
}
50+
}
51+
, maxlength: {
52+
error: function (element, attrs, param) {
53+
return 'A maximum of ' + param + ' characters is required.';
54+
}
55+
}
56+
});
57+
</script>
58+
59+
<label>Username</label>
60+
<input type="text" name="username" ng-model="form.username" validator="minlength=5"/>
61+
```
62+
4063
### **Use a custom Valid Message** <br/>
4164
You can also add a custom validation message by using `message-id` attribute. It allows you to place a valid/invalid message wherever you want, a target element must specify an `id` attribute that matches with a value of the `message-id`.
4265

dist/angular-validation.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ angular.module('validation.directive', ['validation.provider']);
398398
* @param ctrl
399399
* @returns {}
400400
*/
401-
var validFunc = function(element, validMessage, validation, scope, ctrl, attrs) {
401+
var validFunc = function(element, validMessage, validation, scope, ctrl, attrs, param) {
402402
var messageToShow = validMessage || $validationProvider.getDefaultMsg(validation).success;
403403
var validCallback = $parse(attrs.validCallback);
404404
var messageId = attrs.messageId;
@@ -411,6 +411,8 @@ angular.module('validation.directive', ['validation.provider']);
411411
if (element.attr('no-validation-message')) {
412412
messageElem.css('display', 'none');
413413
} else if ($validationProvider.showSuccessMessage && messageToShow) {
414+
messageToShow = angular.isFunction(messageToShow) ? messageToShow(element, attrs, param) : messageToShow;
415+
414416
messageElem.html('').append($compile($validationProvider.getSuccessHTML(messageToShow, element, attrs))(scope));
415417
messageElem.css('display', '');
416418
} else {
@@ -436,7 +438,7 @@ angular.module('validation.directive', ['validation.provider']);
436438
* @param ctrl
437439
* @returns {}
438440
*/
439-
var invalidFunc = function(element, validMessage, validation, scope, ctrl, attrs) {
441+
var invalidFunc = function(element, validMessage, validation, scope, ctrl, attrs, param) {
440442
var messageToShow = validMessage || $validationProvider.getDefaultMsg(validation).error;
441443
var invalidCallback = $parse(attrs.invalidCallback);
442444
var messageId = attrs.messageId;
@@ -449,6 +451,8 @@ angular.module('validation.directive', ['validation.provider']);
449451
if (element.attr('no-validation-message')) {
450452
messageElem.css('display', 'none');
451453
} else if ($validationProvider.showErrorMessage && messageToShow) {
454+
messageToShow = angular.isFunction(messageToShow) ? messageToShow(element, attrs, param) : messageToShow;
455+
452456
messageElem.html('').append($compile($validationProvider.getErrorHTML(messageToShow, element, attrs))(scope));
453457
messageElem.css('display', '');
454458
} else {
@@ -555,15 +559,15 @@ angular.module('validation.directive', ['validation.provider']);
555559
var validationGroup = attrs.validationGroup;
556560
var valid = {
557561
success: function(message) {
558-
validFunc(element, message || attrs[successMessage], validator, scope, ctrl, attrs);
562+
validFunc(element, message || attrs[successMessage], validator, scope, ctrl, attrs, validatorParam);
559563
if (leftValidation.length) {
560564
return checkValidation(scope, element, attrs, ctrl, leftValidation, value);
561565
} else {
562566
return true;
563567
}
564568
},
565569
error: function(message) {
566-
return invalidFunc(element, message || attrs[errorMessage], validator, scope, ctrl, attrs);
570+
return invalidFunc(element, message || attrs[errorMessage], validator, scope, ctrl, attrs, validatorParam);
567571
}
568572
};
569573

0 commit comments

Comments
 (0)