diff options
-rw-r--r-- | framework/Web/Javascripts/source/prado/controls/slider.js | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/framework/Web/Javascripts/source/prado/controls/slider.js b/framework/Web/Javascripts/source/prado/controls/slider.js index 2e26ee51..d612d654 100644 --- a/framework/Web/Javascripts/source/prado/controls/slider.js +++ b/framework/Web/Javascripts/source/prado/controls/slider.js @@ -18,17 +18,9 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, this.maximum = this.options.maximum || this.range.end; this.minimum = this.options.minimum || this.range.start; this.hiddenField=$(this.options.ID+'_1'); + this.trackInitialized=false; - // Will be used to align the handle onto the track, if necessary - this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft); - this.alignY = parseInt(this.options.alignY || - this.track.offsetTop); - - this.trackLength = this.maximumOffset() - this.minimumOffset(); - this.handleLength = this.isVertical() ? - (this.handle.offsetHeight != 0 ? - this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) : - (this.handle.offsetWidth != 0 ? this.handle.offsetWidth : - this.handle.style.width.replace(/px$/,"")); + this.initializeTrack(); this.active = false; this.dragging = false; @@ -64,6 +56,24 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, if(this.options['AutoPostBack']==true) this.observe(this.hiddenField, "change", Prado.PostBack.bindEvent(this,options)); + initializeTrack : function() + { + if(this.trackInitialized || !$(this.track).is(":visible")) + return; + + // Will be used to align the handle onto the track, if necessary + this.alignX = parseInt(this.options.alignX || - this.track.offsetLeft); + this.alignY = parseInt(this.options.alignY || - this.track.offsetTop); + + this.trackLength = this.maximumOffset() - this.minimumOffset(); + this.handleLength = this.isVertical() ? + (this.handle.offsetHeight != 0 ? + this.handle.offsetHeight : this.handles.style.height.replace(/px$/,"")) : + (this.handle.offsetWidth != 0 ? this.handle.offsetWidth : + this.handle.style.width.replace(/px$/,"")); + this.trackInitialized=true; + }, + }, setDisabled: function(){ @@ -151,6 +161,7 @@ Prado.WebUI.TSlider = Class.extend(Prado.WebUI.PostBackControl, startDrag: function(event) { if(Event.isLeftClick(event)) { + this.initializeTrack(); if(!this.disabled){ this.active = true; var handle = Event.element(event); |