From b6ec29a7e5603aa1862050b0c30e3e9d49c47c78 Mon Sep 17 00:00:00 2001 From: maggiewachs Date: Fri, 14 Jan 2011 16:05:48 -0500 Subject: [PATCH] Fixed bug 676 where the switch toggle (slider) wasn't updating on select change: https://github.com/jquery/jquery-mobile/issues/labels/5%20-%20Critical#issue/676 --- js/jquery.mobile.forms.slider.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/js/jquery.mobile.forms.slider.js b/js/jquery.mobile.forms.slider.js index 58843f1b..6943acc4 100644 --- a/js/jquery.mobile.forms.slider.js +++ b/js/jquery.mobile.forms.slider.js @@ -33,7 +33,6 @@ $.widget( "mobile.slider", $.mobile.widget, { min = (cType == 'input') ? parseFloat(control.attr('min')) : 0, max = (cType == 'input') ? parseFloat(control.attr('max')) : control.find('option').length-1, step = window.parseFloat(control.attr('data-step') || 1), - slider = $('
'), handle = $('') .appendTo(slider) @@ -74,8 +73,11 @@ $.widget( "mobile.slider", $.mobile.widget, { control .addClass((cType == 'input') ? 'ui-slider-input' : 'ui-slider-switch') - .keyup(function(){ - self.refresh( $(this).val() ); + .change(function(){ + self.refresh( ((cType == 'input') ? parseFloat(control.val()) : control[0].selectedIndex), true ); + }) + .keyup(function(){ // necessary? + self.refresh( ((cType == 'input') ? parseFloat(control.val()) : control[0].selectedIndex), true ); }); $(document).bind($.support.touch ? "touchmove" : "mousemove", function(event){ @@ -191,7 +193,7 @@ $.widget( "mobile.slider", $.mobile.widget, { this.refresh(); }, - refresh: function(val){ + refresh: function(val, isfromControl){ if ( this.options.disabled ) { return; } var control = this.element, percent, @@ -211,7 +213,7 @@ $.widget( "mobile.slider", $.mobile.widget, { percent = Math.round( ((data.pageX - this.slider.offset().left) / this.slider.width() ) * 100 ); } else { if ( val == null ) { - val = (cType === "input") ? parseFloat(control.val()) : control[ 0 ].selectedIndex; + val = (cType === "input") ? parseFloat(control.val()) : control[0].selectedIndex; } percent = (parseFloat(val) - min) / (max - min) * 100; } @@ -252,7 +254,7 @@ $.widget( "mobile.slider", $.mobile.widget, { } else { control[ 0 ].selectedIndex = newval; } - control.trigger("change"); + if (!isfromControl) { control.trigger("change"); } }, enable: function(){