From 396f8d019e593f8f6ae226d66ef4bb9ca1467d93 Mon Sep 17 00:00:00 2001 From: Gabriele Rabbiosi Date: Sat, 22 Oct 2011 17:05:05 +0200 Subject: [PATCH] Issue #2756 - flip toggle switch value can be changed when the switch is disabled --- js/jquery.mobile.forms.slider.js | 3 +-- tests/unit/slider/slider_events.js | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) 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