diff --git a/js/jquery.mobile.forms.slider.js b/js/jquery.mobile.forms.slider.js index baa6a8d6..1228fa85 100644 --- a/js/jquery.mobile.forms.slider.js +++ b/js/jquery.mobile.forms.slider.js @@ -215,8 +215,7 @@ $.widget( "mobile.slider", $.mobile.widget, { refresh: function( val, isfromControl, preventInputUpdate ) { if ( this.options.disabled || this.element.attr('disabled')) { - this.slider.addClass('ui-disabled'); - return; + this.disable(); } var control = this.element, percent, diff --git a/tests/unit/slider/slider_events.js b/tests/unit/slider/slider_events.js index d68dfa76..d5ff84fd 100644 --- a/tests/unit/slider/slider_events.js +++ b/tests/unit/slider/slider_events.js @@ -199,4 +199,34 @@ ok( control[0].selectedIndex !== currentValue, "value did change"); same( changeCount, 1, "change event should be fired once during a click" ); }); + + asyncTest( "toggle switch should refresh when disabled", function() { + var control = $( "#slider-switch" ), + handle = control.data( "slider" ).handle; + + $.testHelper.sequence([ + function() { + // set the initial value + control.val('off').slider('refresh'); + }, + + function() { + equals(handle.css('left'), '0%', 'handle starts on the left side'); + + // disable and change value + control.slider('disable'); + control.val('on').slider('refresh'); + }, + + function() { + equals(handle.css('left'), '100%', 'handle ends on the right side'); + + // reset slider state so it is ready for other tests + control.slider('enable'); + + start(); + } + ], 500); + }); + })(jQuery); \ No newline at end of file