mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-24 10:20:23 +00:00
fix(input): keep track of min/max attars on-the-fly
Now input[type=button] keeps track of both min and max attrs even if they change over time.
This commit is contained in:
parent
269bc7e51f
commit
4b653aeac1
2 changed files with 32 additions and 2 deletions
|
|
@ -544,8 +544,8 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|||
});
|
||||
|
||||
if (attr.min) {
|
||||
var min = parseFloat(attr.min);
|
||||
var minValidator = function(value) {
|
||||
var min = parseFloat(attr.min);
|
||||
if (!ctrl.$isEmpty(value) && value < min) {
|
||||
ctrl.$setValidity('min', false);
|
||||
return undefined;
|
||||
|
|
@ -560,8 +560,8 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|||
}
|
||||
|
||||
if (attr.max) {
|
||||
var max = parseFloat(attr.max);
|
||||
var maxValidator = function(value) {
|
||||
var max = parseFloat(attr.max);
|
||||
if (!ctrl.$isEmpty(value) && value > max) {
|
||||
ctrl.$setValidity('max', false);
|
||||
return undefined;
|
||||
|
|
|
|||
|
|
@ -667,6 +667,21 @@ describe('input', function() {
|
|||
expect(scope.value).toBe(100);
|
||||
expect(scope.form.alias.$error.min).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should validate even if min value changes on-the-fly', function(done) {
|
||||
scope.min = 10;
|
||||
compileInput('<input type="number" ng-model="value" name="alias" min="{{min}}" />');
|
||||
scope.$digest();
|
||||
|
||||
changeInputValueTo('5');
|
||||
expect(inputElm).toBeInvalid();
|
||||
|
||||
scope.min = 0;
|
||||
scope.$digest(function () {
|
||||
expect(inputElm).toBeValid();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -686,6 +701,21 @@ describe('input', function() {
|
|||
expect(scope.value).toBe(0);
|
||||
expect(scope.form.alias.$error.max).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should validate even if max value changes on-the-fly', function(done) {
|
||||
scope.max = 10;
|
||||
compileInput('<input type="number" ng-model="value" name="alias" max="{{max}}" />');
|
||||
scope.$digest();
|
||||
|
||||
changeInputValueTo('5');
|
||||
expect(inputElm).toBeValid();
|
||||
|
||||
scope.max = 0;
|
||||
scope.$digest(function () {
|
||||
expect(inputElm).toBeInvalid();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue