diff options
author | Jyoti Deka <dekajp@gmail.com> | 2013-10-19 00:56:20 -0400 |
---|---|---|
committer | TJ VanToll <tj.vantoll@gmail.com> | 2014-10-08 09:04:41 -0400 |
commit | 6833a3169775d4c15dd5e68c96bc63ad0187035e (patch) | |
tree | c52c0536a224ec2100c10c797676be635da893e2 | |
parent | d85016abf00685f3dd520031f5920bc6ec970f76 (diff) | |
download | jquery-ui-6833a3169775d4c15dd5e68c96bc63ad0187035e.tar.gz jquery-ui-6833a3169775d4c15dd5e68c96bc63ad0187035e.zip |
Slider: Don't allow a slider's value to exceed its max
Fixes #9376
Closes gh-1016
-rw-r--r-- | tests/unit/slider/slider_options.js | 22 | ||||
-rw-r--r-- | ui/slider.js | 10 |
2 files changed, 28 insertions, 4 deletions
diff --git a/tests/unit/slider/slider_options.js b/tests/unit/slider/slider_options.js index 587f847cf..defb6f3b0 100644 --- a/tests/unit/slider/slider_options.js +++ b/tests/unit/slider/slider_options.js @@ -40,7 +40,7 @@ test( "disabled", function(){ }); test( "max", function() { - expect( 2 ); + expect( 4 ); element = $( "<div></div>" ); options = { @@ -52,8 +52,24 @@ test( "max", function() { }; element.slider( options ); - ok(element.slider( "option", "value" ) === options.value, "value option is not contained by max" ); - ok(element.slider( "value" ) === options.max, "value method is contained by max" ); + ok( element.slider( "option", "value" ) === options.value, "value option is not contained by max" ); + ok( element.slider( "value" ) === options.max, "value method is contained by max" ); + + options = { + max: 9, + min: 1, + orientation: "horizontal", + step: 3, + value: 8.75 + }; + + element.slider( options ); + ok( element.slider( "value" ) === 7, "value method is within max, edge Case" ); + + options.step = 2; + + element.slider( options ); + ok( element.slider( "value" ) === options.max, "value method will max, step is changed" ); element.slider( "destroy" ); }); diff --git a/ui/slider.js b/ui/slider.js index 74cbcc759..6d97f3c69 100644 --- a/ui/slider.js +++ b/ui/slider.js @@ -58,6 +58,7 @@ return $.widget( "ui.slider", $.ui.mouse, { this._handleIndex = null; this._detectOrientation(); this._mouseInit(); + this._calculateNewMax(); this.element .addClass( "ui-slider" + @@ -472,9 +473,11 @@ return $.widget( "ui.slider", $.ui.mouse, { } this._animateOff = false; break; + case "step": case "min": case "max": this._animateOff = true; + this._calculateNewMax(); this._refreshValue(); this._animateOff = false; break; @@ -543,12 +546,17 @@ return $.widget( "ui.slider", $.ui.mouse, { return parseFloat( alignValue.toFixed(5) ); }, + _calculateNewMax: function() { + var remainder = ( this.options.max - this._valueMin() ) % this.options.step; + this.max = this.options.max - remainder; + }, + _valueMin: function() { return this.options.min; }, _valueMax: function() { - return this.options.max; + return this.max; }, _refreshValue: function() { |