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(){