diff --git a/js/widgets/forms/slider.js b/js/widgets/forms/slider.js index 719c576c600..5aa1ae8bff1 100644 --- a/js/widgets/forms/slider.js +++ b/js/widgets/forms/slider.js @@ -154,7 +154,9 @@ $.widget( "mobile.slider", $.mobile.widget, { // prevent screen drag when slider activated $( document ).bind( "vmousemove", function( event ) { - if ( self.dragging ) { + // NOTE: we don't do this in refresh because we still want to + // support programmatic alteration of disabled inputs + if ( self.dragging && !self.options.disabled ) { // self.mouseMoved must be updated before refresh() because it will be used in the control "change" event self.mouseMoved = true; @@ -177,6 +179,12 @@ $.widget( "mobile.slider", $.mobile.widget, { control.bind( "vmouseup", $.proxy( self._checkedRefresh, self)); slider.bind( "vmousedown", function( event ) { + // NOTE: we don't do this in refresh because we still want to + // support programmatic alteration of disabled inputs + if ( self.options.disabled ) { + return false; + } + self.dragging = true; self.userModified = false; self.mouseMoved = false; @@ -321,6 +329,8 @@ $.widget( "mobile.slider", $.mobile.widget, { refresh: function( val, isfromControl, preventInputUpdate ) { + // NOTE: we don't return here because we want to support programmatic + // alteration of the input value, which should still update the slider if ( this.options.disabled || this.element.attr('disabled')) { this.disable(); }