From ae1d6d5f90236405023964bb3061eccd6c625e39 Mon Sep 17 00:00:00 2001 From: Jyoti Deka Date: Fri, 9 Jan 2015 20:06:32 -0500 Subject: Slider: Fix max calculation, when step is float Fixes #10721 Closes gh-1398 --- ui/slider.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'ui') diff --git a/ui/slider.js b/ui/slider.js index 9cb088c88..33eb55b3e 100644 --- a/ui/slider.js +++ b/ui/slider.js @@ -552,8 +552,26 @@ return $.widget( "ui.slider", $.ui.mouse, { }, _calculateNewMax: function() { - var remainder = ( this.options.max - this._valueMin() ) % this.options.step; - this.max = this.options.max - remainder; + var max = this.options.max, + min = this._valueMin(), + step = this.options.step, + aboveMin = Math.floor( ( max - min ) / step ) * step; + max = aboveMin + min; + this.max = parseFloat( max.toFixed( this._precision() ) ); + }, + + _precision: function() { + var precision = this._precisionOf( this.options.step ); + if ( this.options.min !== null ) { + precision = Math.max( precision, this._precisionOf( this.options.min ) ); + } + return precision; + }, + + _precisionOf: function( num ) { + var str = num.toString(), + decimal = str.indexOf( "." ); + return decimal === -1 ? 0 : str.length - decimal - 1; }, _valueMin: function() { -- cgit v1.2.3