Skip to content

Commit 531cb12

Browse files
author
Huei Tan
authored
Merge pull request #231 from kuaisheng/master
improve valid result, you can set success or error message when valid…
2 parents c5e2603 + 73fc9c1 commit 531cb12

File tree

5 files changed

+178
-18
lines changed

5 files changed

+178
-18
lines changed

API.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ You can also add a `validation-group` directive to group many elements into a gr
148148

149149
<label>Huei (Custom setup the new validator - Function)</label>
150150
<input type="text" name="huei" ng-model="form.huei" validator="huei"/>
151+
152+
<label>Kuaisheng (Custom setup the new validator - Function)</label>
153+
<input type="text" name="kuaisheng" ng-model="form.kuaisheng" validator="kuaisheng"/>
151154
```
152155

153156
```javascript
@@ -187,6 +190,37 @@ angular.module('yourApp', ['validation'])
187190
success: 'Thanks!'
188191
}
189192
});
193+
194+
// Setup `kuaisheng` validation
195+
$validationProvider
196+
.setExpression({
197+
kuaisheng: function(value, scope, element, attrs, param) {
198+
var errorStr = [
199+
'errorStr1',
200+
'errorStr2'
201+
];
202+
var len = errorStr.length;
203+
for (var i = len - 1; i >= 0; i--) {
204+
if (value.indexOf(errorStr[i]) > -1) {
205+
return {
206+
result: false,
207+
message: 'input should not include ' + errorStr[i]
208+
};
209+
}
210+
}
211+
return {
212+
result: true,
213+
message: ''
214+
};
215+
}
216+
})
217+
.setDefaultMsg({
218+
kuaisheng: {
219+
error: 'valid is error',
220+
success: 'Thanks!'
221+
}
222+
});
223+
190224
}]);
191225
```
192226

dist/angular-validation.js

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,32 @@ angular.module('validation.directive', ['validation.provider']);
505505
*/
506506
var focusElements = {};
507507

508+
/**
509+
* Get Validation Result Object
510+
* @param data
511+
* @returns {
512+
* result: Boolean, // is success or error
513+
* message: String // tips
514+
* }
515+
*/
516+
function getResultObj(data) {
517+
var res = {};
518+
if (data && data.length > 0) {
519+
res = data[0];
520+
if (!angular.isObject(res)) {
521+
res = {
522+
result: res,
523+
message: ''
524+
};
525+
}
526+
} else {
527+
res = {
528+
result: false,
529+
message: ''
530+
};
531+
}
532+
return res;
533+
}
508534

509535
/**
510536
* Check Validation with Function or RegExp
@@ -528,16 +554,16 @@ angular.module('validation.directive', ['validation.provider']);
528554
var expression = $validationProvider.getExpression(validator);
529555
var validationGroup = attrs.validationGroup;
530556
var valid = {
531-
success: function() {
532-
validFunc(element, attrs[successMessage], validator, scope, ctrl, attrs);
557+
success: function(message) {
558+
validFunc(element, message || attrs[successMessage], validator, scope, ctrl, attrs);
533559
if (leftValidation.length) {
534560
return checkValidation(scope, element, attrs, ctrl, leftValidation, value);
535561
} else {
536562
return true;
537563
}
538564
},
539-
error: function() {
540-
return invalidFunc(element, attrs[errorMessage], validator, scope, ctrl, attrs);
565+
error: function(message) {
566+
return invalidFunc(element, message || attrs[errorMessage], validator, scope, ctrl, attrs);
541567
}
542568
};
543569

@@ -550,12 +576,14 @@ angular.module('validation.directive', ['validation.provider']);
550576
if (expression.constructor === Function) {
551577
return $q.all([$validationProvider.getExpression(validator)(value, scope, element, attrs, validatorParam)])
552578
.then(function(data) {
553-
if (data && data.length > 0 && data[0]) {
579+
var resultObj = getResultObj(data);
580+
var message = resultObj.message;
581+
if (resultObj.result) {
554582
if (validationGroup) {
555583
groups[validationGroup][ctrl.$name] = true;
556584
setValidationGroup(scope, validationGroup, true);
557585
}
558-
return valid.success();
586+
return valid.success(message);
559587
} else if (validationGroup) {
560588
groups[validationGroup][ctrl.$name] = false;
561589

@@ -565,9 +593,9 @@ angular.module('validation.directive', ['validation.provider']);
565593
setValidationGroup(scope, validationGroup, true);
566594
} else {
567595
setValidationGroup(scope, validationGroup, false);
568-
return valid.error();
596+
return valid.error(message);
569597
}
570-
} else return valid.error();
598+
} else return valid.error(message);
571599
}, function() {
572600
return valid.error();
573601
});
@@ -647,7 +675,7 @@ angular.module('validation.directive', ['validation.provider']);
647675
var uid = ctrl.validationId = guid();
648676

649677
/**
650-
* to have avalue to rollback to
678+
* to have a value to rollback to
651679
*/
652680
var originalViewValue = null;
653681

0 commit comments

Comments
 (0)