aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/services.js7
-rw-r--r--src/widgets.js10
2 files changed, 11 insertions, 6 deletions
diff --git a/src/services.js b/src/services.js
index 291e1704..6e1a1945 100644
--- a/src/services.js
+++ b/src/services.js
@@ -100,5 +100,12 @@ angularService("$invalidWidgets", function(){
if (index === -1)
invalidWidgets.push(element);
};
+ invalidWidgets.visible = function() {
+ var count = 0;
+ foreach(invalidWidgets, function(widget){
+ count = count + (isVisible(widget) ? 1 : 0);
+ });
+ return count;
+ };
return invalidWidgets;
});
diff --git a/src/widgets.js b/src/widgets.js
index faa60043..f87c1d02 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -22,20 +22,18 @@ function valueAccessor(scope, element) {
var validatorName = element.attr('ng-validate') || NOOP,
validator = compileValidator(validatorName),
required = element.attr('ng-required'),
- lastError, lastVisible,
+ lastError,
invalidWidgets = scope.$invalidWidgets || {markValid:noop, markInvalid:noop};
required = required || required === '';
if (!validator) throw "Validator named '" + validatorName + "' not found.";
function validate(value) {
var error = required && !trim(value) ?
"Required" :
- validator({state:scope, scope:{get:scope.$get, set:scope.$set}}, value),
- visible = isVisible(element);
- if (error !== lastError || visible !== lastVisible) {
+ validator({state:scope, scope:{get:scope.$get, set:scope.$set}}, value);
+ if (error !== lastError) {
elementError(element, NG_VALIDATION_ERROR, error);
lastError = error;
- lastVisible = visible;
- if (error && visible)
+ if (error)
invalidWidgets.markInvalid(element);
else
invalidWidgets.markValid(element);