From 191b5e04a3811adb00f411c0c6b32dab626b77d4 Mon Sep 17 00:00:00 2001 From: Kin Blas Date: Mon, 29 Aug 2011 12:39:25 -0700 Subject: [PATCH] Fix for issue 2345 - Flip toggle switches *ALWAYS* toggle - We now track whether or not the user has modified the value of the switch control. If so, we don't toggle it's value on mouseup. --- js/jquery.mobile.forms.slider.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/js/jquery.mobile.forms.slider.js b/js/jquery.mobile.forms.slider.js index e9149be6172..13ac9d86002 100644 --- a/js/jquery.mobile.forms.slider.js +++ b/js/jquery.mobile.forms.slider.js @@ -71,7 +71,8 @@ $.widget( "mobile.slider", $.mobile.widget, { slider: slider, handle: handle, dragging: false, - beforeStart: null + beforeStart: null, + userModified: false }); if ( cType == "select" ) { @@ -113,12 +114,14 @@ $.widget( "mobile.slider", $.mobile.widget, { $( document ).bind( "vmousemove", function( event ) { if ( self.dragging ) { self.refresh( event ); + self.userModified = self.userModified || self.beforeStart !== control[0].selectedIndex; return false; } }); slider.bind( "vmousedown", function( event ) { self.dragging = true; + self.userModified = false; if ( cType === "select" ) { self.beforeStart = control[0].selectedIndex; @@ -135,7 +138,7 @@ $.widget( "mobile.slider", $.mobile.widget, { if ( cType === "select" ) { - if ( self.beforeStart === control[ 0 ].selectedIndex ) { + if ( !self.userModified ) { //tap occurred, but value didn't change. flip it! self.refresh( !self.beforeStart ? 1 : 0 ); } @@ -323,4 +326,4 @@ $( document ).bind( "pagecreate create", function( e ){ }); -})( jQuery ); \ No newline at end of file +})( jQuery );