diff options
| author | Misko Hevery | 2010-04-08 13:43:40 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-04-08 13:43:40 -0700 |
| commit | c4ef1f2fdd73bdaeda879e596d3d96e4e68cb6fd (patch) | |
| tree | 3fc1943a4599a764aef9a41d995246bb0e48f463 /src/widgets.js | |
| parent | e0ad7dfcd47196d0aa9271e84b2c4ac26cfda3f4 (diff) | |
| download | angular.js-c4ef1f2fdd73bdaeda879e596d3d96e4e68cb6fd.tar.bz2 | |
tests failing jstd to show cory
Diffstat (limited to 'src/widgets.js')
| -rw-r--r-- | src/widgets.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/widgets.js b/src/widgets.js index e89e8ca4..faa60043 100644 --- a/src/widgets.js +++ b/src/widgets.js @@ -22,16 +22,20 @@ function valueAccessor(scope, element) { var validatorName = element.attr('ng-validate') || NOOP, validator = compileValidator(validatorName), required = element.attr('ng-required'), - lastError, + lastError, lastVisible, 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); - if (error !== lastError) { + 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) { elementError(element, NG_VALIDATION_ERROR, error); lastError = error; - if (error) + lastVisible = visible; + if (error && visible) invalidWidgets.markInvalid(element); else invalidWidgets.markValid(element); |
