📄 sliderbehavior.js
字号:
var sliderBounds = this._getRailBounds();
var offset = (this._isHorizontal) ? evt.offsetX : evt.offsetY;
var minOffset = handleBounds.width / 2;
var maxOffset = sliderBounds.width - minOffset;
offset = (offset < minOffset) ? minOffset
: (offset > maxOffset) ? maxOffset
: offset;
this._calcValue(null, offset, true);
this._fireTextBoxChangeEvent();
},
// _fireTextBoxChangeEvent
// Raise the change event on the underlying textbox when
// its value is updated programmatically.
//
_fireTextBoxChangeEvent : function() {
if (document.createEvent) {
var onchangeEvent = document.createEvent('HTMLEvents');
onchangeEvent.initEvent('change', true, false);
this.get_element().dispatchEvent(onchangeEvent);
}
else if(document.createEventObject) {
this.get_element().fireEvent('onchange');
}
},
// IDragSource Members.
//
get_dragDataType : function() {
return 'HTML';
},
getDragData : function() {
return this._handle;
},
get_dragMode : function() {
return AjaxControlToolkit.DragMode.Move;
},
onDragStart : function() {
this._resetDragHandle();
this._raiseEvent('slideStart');
},
onDrag : function() {
var dragHandleBounds = this._getBoundsInternal(this._dragHandle);
var handleBounds = this._getHandleBounds();
var sliderBounds = this._getRailBounds();
var handlePosition;
if(this._isHorizontal) {
handlePosition = { x:dragHandleBounds.x - sliderBounds.x, y:0 };
}
else {
handlePosition = { y:dragHandleBounds.x - sliderBounds.x, x:0 };
}
$common.setLocation(this._handle, handlePosition);
this._calcValue(null, null);
// If we have a discrete slider, correct the handle's position
// based on the computed value.
if(this._steps > 1) {
this._setHandleOffset(this.get_Value(), false);
}
},
onDragEnd : function() {
this._onHandleReleased();
},
// IDropTarget members.
//
get_dropTargetElement : function() {
return document.body;
},
canDrop : function(dragMode, dataType) {
return dataType == 'HTML';
},
drop : Function.emptyMethod,
onDragEnterTarget : Function.emptyMethod,
onDragLeaveTarget : Function.emptyMethod,
onDragInTarget : Function.emptyMethod,
// Events
//
add_sliderInitialized : function(handler) {
this.get_events().addHandler('sliderInitialized', handler);
},
remove_sliderInitialized : function(handler) {
this.get_events().removeHandler('sliderInitialized', handler);
},
add_valueChanged : function(handler) {
this.get_events().addHandler('valueChanged', handler);
},
remove_valueChanged : function(handler) {
this.get_events().removeHandler('valueChanged', handler);
},
add_slideStart : function(handler) {
this.get_events().addHandler('slideStart', handler);
},
remove_slideStart : function(handler) {
this.get_events().removeHandler('slideStart', handler);
},
add_slideEnd : function(handler) {
this.get_events().addHandler('slideEnd', handler);
},
remove_slideEnd : function(handler) {
this.get_events().removeHandler('slideEnd', handler);
},
_raiseEvent : function(eventName, eventArgs) {
var handler = this.get_events().getHandler(eventName);
if (handler) {
if (!eventArgs) {
eventArgs = Sys.EventArgs.Empty;
}
handler(this, eventArgs);
}
},
// Properties.
//
get_Value : function() {
return this._value;
},
set_Value : function(value) {
var oldValue = this._value;
var newValue = value;
if(!this._isUpdatingInternal) {
newValue = this._calcValue(value);
}
this.get_element().value = this._value = newValue.toFixed(this._decimals);
this._ensureBinding();
if(!Number.isInstanceOfType(this._value)) {
try {
this._value = parseFloat(this._value);
} catch(ex) {
this._value = Number.NaN;
}
}
if(this._tooltipText) {
this._handle.alt = this._handle.title =
String.format(this._tooltipText, this._value);
}
if(this._isInitializedInternal) {
this._setHandleOffset(newValue, this._enableHandleAnimation && this._animationPending);
if(this._isUpdatingInternal) {
if(!this._raiseChangeOnlyOnMouseUp) {
this._fireTextBoxChangeEvent();
}
}
if(this._value != oldValue) {
this._raiseEvent('valueChanged');
}
}
},
get_RailCssClass : function() {
return this._railCssClass;
},
set_RailCssClass : function(value) {
this._railCssClass = value;
},
get_HandleImageUrl : function() {
return this._handleImageUrl;
},
set_HandleImageUrl : function(value) {
this._handleImageUrl = value;
},
get_HandleCssClass : function() {
return this._handleCssClass;
},
set_HandleCssClass : function(value) {
this._handleCssClass = value;
},
get_Minimum : function() {
return this._minimum;
},
set_Minimum : function(value) {
this._minimum = value;
},
get_Maximum : function() {
return this._maximum;
},
set_Maximum : function(value) {
this._maximum = value;
},
get_Orientation : function() {
return this._orientation;
},
set_Orientation : function(value) {
this._orientation = value;
},
get_Steps : function() {
return this._steps;
},
set_Steps : function(value) {
this._steps = Math.abs(value);
this._steps = (this._steps == 1) ? 2 : this._steps;
},
get_Decimals : function() {
return this._decimals;
},
set_Decimals : function(value) {
this._decimals = Math.abs(value);
},
get_EnableHandleAnimation : function() {
return this._enableHandleAnimation;
},
set_EnableHandleAnimation : function(value) {
this._enableHandleAnimation = value;
},
get_HandleAnimationDuration : function() {
return this._handleAnimationDuration;
},
set_HandleAnimationDuration : function(value) {
this._handleAnimationDuration = value;
},
get_BoundControlID : function() {
return this._boundControlID;
},
set_BoundControlID : function(value) {
this._boundControlID = value;
if(this._boundControlID) {
this._boundControl = $get(this._boundControlID);
} else {
this._boundControl = null;
}
},
get_Length : function() {
return this._length;
},
set_Length : function(value) {
this._length = value + 'px';
},
get_SliderInitialized : function() {
return this._isInitializedInternal;
},
get_RaiseChangeOnlyOnMouseUp : function() {
return this._raiseChangeOnlyOnMouseUp;
},
set_RaiseChangeOnlyOnMouseUp : function(value) {
this._raiseChangeOnlyOnMouseUp = value;
},
get_TooltipText : function() {
return this._tooltipText;
},
set_TooltipText : function(value) {
this._tooltipText = value;
},
// These are helper functions for communicating state back to the extender on the
// server side. They take or return a custom string that is available in your initialize method
// and later.
//
getClientState : function() {
var value = AjaxControlToolkit.SliderBehavior.callBaseMethod(this, 'get_ClientState');
if (value == '') value = null;
return value;
},
setClientState : function(value) {
return AjaxControlToolkit.SliderBehavior.callBaseMethod(this, 'set_ClientState',[value]);
}
}
AjaxControlToolkit.SliderBehavior.DropPending = null; // Global, used to work around an issue when using the GenericDragDropManager in IE.
AjaxControlToolkit.SliderBehavior.registerClass('AjaxControlToolkit.SliderBehavior', AjaxControlToolkit.BehaviorBase, AjaxControlToolkit.IDragSource, AjaxControlToolkit.IDropTarget);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -