⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numericupdownbehavior.js

📁 AJAX 应用 实现页面的无刷新
💻 JS
📖 第 1 页 / 共 2 页
字号:
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.


/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />


Type.registerNamespace('AjaxControlToolkit');

AjaxControlToolkit.NumericUpDownBehavior = function(element) {
    /// <summary>
    /// The NumericUpDownBehavior is used add up/down buttons to any textbox
    /// </summary>
    /// <param name="element" type="Sys.UI.DomElement" domElement="true">
    /// DOM Element the behavior is associated with
    /// </param>
    AjaxControlToolkit.NumericUpDownBehavior.initializeBase(this, [element]);
    
    // Properties
    this._currentValue = null;
    this._widthValue = null;
    this._targetButtonUpIDValue = null;
    this._targetButtonDownIDValue = null;
    this._serviceUpPathValue = null;
    this._serviceUpMethodValue = null;
    this._serviceDownPathValue = null;
    this._serviceDownMethodValue = null;
    this._refValuesValue = null;
    this._tagValue = null;
    this._elementTextBox = null;
    this._step = 1.0;
    this._min = -1.79769313486232e308;
    this._max = 1.79769313486232e308;

    // Variables
    this._bUp = null;
    this._bDown = null;
    this._stepPrecision = 0;
    this._valuePrecision = 0;

    // Delegates
    this._clickUpHandler = null;
    this._clickDownHandler = null;
    this._changeHandler = null;
}
AjaxControlToolkit.NumericUpDownBehavior.prototype = {
    initialize : function() {
        /// <summary>
        /// Initialize the behavior
        /// </summary>
        AjaxControlToolkit.NumericUpDownBehavior.callBaseMethod(this, 'initialize');
        $common.prepareHiddenElementForATDeviceUpdate();
        
        var e = this.get_element();
        this._elementTextBox = e;
        if ((this._refValuesValue) || (this._serviceUpMethodValue) || (this._serviceDownMethodValue)) {
            this._elementTextBox.readOnly = true;
        } else {
            this._elementTextBox.readOnly = false;
        }
        //Init TextBox
        this.readValue();
      
        //Add Event
        this._changeHandler = Function.createDelegate(this, this._onChange);
        $addHandler(e, 'blur',this._changeHandler);
   
        //If no button design for include them
        if ((this._targetButtonUpIDValue == '') || (this._targetButtonDownIDValue == '')) {
            //Change Style TextBox
            this._widthValue = Math.max(this._widthValue, 24);
            e.style.width =  (this._widthValue - 24) + 'px';
            e.style.textAlign = 'center';
            
            //Create a new parent for TextBox
            var _divContent = document.createElement('DIV');
	        _divContent.style.position = 'relative';
	        _divContent.style.width = this._widthValue + 'px';
	        _divContent.style.fontSize = e.clientHeight + 'px';
	        _divContent.style.height = e.clientHeight + 'px';
	        _divContent.style.paddingRight = '24px';
	        _divContent.style.display = 'inline';
            e.parentNode.insertBefore(_divContent,e);
	        e.parentNode.removeChild(e);
            _divContent.appendChild(e);
        }

    
        //If no Up button create it
        if (this._targetButtonUpIDValue == '') {
          this._bUp = document.createElement('input');
          this._bUp.type = 'button';
          this._bUp.id = e.id + '_bUp';
          this._bUp.style.border = 'outset 1px';
          if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
              this._bUp.style.fontFamily = 'Webdings';
              this._bUp.style.fontSize = '9pt';
              this._bUp.value = '5';
              this._bUp.style.top = '0px';
          } else {
              this._bUp.style.fontFamily = 'Tahoma, Arial, sans-serif';
              this._bUp.style.fontSize = '5pt';
              this._bUp.value = '\u25B2'; 
              this._bUp.style.top = '2px';
              this._bUp.style.fontWeight = 'bold';
              this._bUp.style.lineHeight = '3pt';
          }
          this._bUp.style.height = '12px';
          this._bUp.style.left = (this._widthValue - 24) + 'px';
          this._bUp.style.width = '24px';
          this._bUp.style.overflow = 'hidden';
          this._bUp.style.lineHeight = '1em';
          this._bUp.style.position = 'absolute';
          _divContent.appendChild(this._bUp);
        }
        
        //If no Down button create it
        if (this._targetButtonDownIDValue == '') {
          this._bDown = document.createElement('input');
          this._bDown.type = 'button'; 
          this._bDown.id = e.id + '_bDown';
          this._bDown.style.border = 'outset 1px';
          if (Sys.Browser.agent == Sys.Browser.InternetExplorer) {
            this._bDown.value = '6';
            this._bDown.style.fontFamily = 'Webdings';
            this._bDown.style.fontSize = '9pt';          
            this._bDown.style.top = '12px';
	      } else {
            this._bDown.value = '\u25BC';
            this._bDown.style.fontFamily = 'Tahoma, Arial, sans-serif';
            this._bDown.style.fontSize = '5pt'; 
            this._bDown.style.fontWeight = 'bold';
            this._bDown.style.top = '13px';
          }  
	      this._bDown.style.height = '11px';
	      this._bDown.style.lineHeight = '3pt';
	      this._bDown.style.left = (this._widthValue - 24) + 'px';
          this._bDown.style.width = '24px';
          this._bDown.style.overflow = 'hidden';
          this._bDown.style.position = 'absolute';
          _divContent.appendChild(this._bDown);
        }
        
        //Add button Up Down Event
        if (this._bUp == null) {
            this._bUp = document.getElementById(this._targetButtonUpIDValue);
        }
        if (this._bUp) {
            this._clickUpHandler = Function.createDelegate(this, this._clickUp);
            $addHandler(this._bUp, 'click',this._clickUpHandler);
        }
        if (this._bDown == null) {
            this._bDown = document.getElementById(this._targetButtonDownIDValue);
        }
        if (this._bDown) {
            this._clickDownHandler = Function.createDelegate(this, this._clickDown);
            $addHandler(this._bDown, 'click',this._clickDownHandler);
        } 
    },
    
    dispose : function() {
        /// <summary>
        /// Dispose the behavior
        /// </summary>

        if (this._changeHandler) {
            $removeHandler(this.get_element(), 'blur', this._changeHandler);
            this._changeHandler = null;
        }

        if (this._clickUpHandler) {
            if (this._bUp) {
              $removeHandler(this._bUp, 'click', this._clickUpHandler);
              this._clickUpHandler = null;
            }
        }
            
        if (this._clickDownHandler) {
            if (this._bDown) {
              $removeHandler(this._bDown, 'click', this._clickDownHandler);
              this._clickDownHandler = null;
            }
        }
        
        AjaxControlToolkit.NumericUpDownBehavior.callBaseMethod(this, 'dispose');
    },

    add_currentChanged : function(handler) {
        /// <summary>
        /// Add a handler to the currentChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().addHandler('currentChanged', handler);
    },
    remove_currentChanged : function(handler) {
        /// <summary>
        /// Remove a handler from the currentChanged event
        /// </summary>
        /// <param name="handler" type="Function">
        /// Handler
        /// </param>
        this.get_events().removeHandler('currentChanged', handler);
    },
    raiseCurrentChanged : function(eventArgs) {
        /// <summary>
        /// Raise the currentChanged event
        /// </summary>
        /// <param name="eventArgs" type="Sys.EventArgs">
        /// Event arguments
        /// </param>
        var handler = this.get_events().getHandler('currentChanged');
        if (handler) {
            if (!eventArgs) {
                eventArgs = Sys.EventArgs.Empty;
            }
            handler(this, eventArgs);
        }
    },
    
    _onChange : function() {
        /// <summary>
        /// Handler for the textbox's change event
        /// </summary>
        
        this.readValue();
       
        if(this._refValuesValue) {
            this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
            if (this._elementTextBox) {
                this._elementTextBox.readOnly = true;
            }
        } else {
            this.setCurrentToTextBox(this._currentValue);
            if (this._elementTextBox) {
                // Make the textbox readonly if its results come from a webservice
                this._elementTextBox.readOnly = this._serviceUpMethodValue || this._serviceDownMethodValue;
            }
        }
    },
    
    readValue : function() {
        /// <summary>
        /// Parse value of textbox and this._currentValue to be that value.
        /// this._currentValue = this._min if some there is an exception
        /// when attempting to parse.
        /// Parse int or string element of RefValues
        /// </summary>

        if (this._elementTextBox) {
            var v = this._elementTextBox.value;
            // if textbox empty this._currentValue = this._min
            if(!this._refValuesValue) {
                if(!v) {
                    this._currentValue = this._min;
                } else {
                    try {
                        this._currentValue = parseFloat(v);
                    } catch(ex) {
                        this._currentValue = this._min;
                    }
                }
                if(isNaN(this._currentValue)) {
                    this._currentValue = this._min;
                }
                this.setCurrentToTextBox(this._currentValue);
                this._valuePrecision = this._computePrecision(this._currentValue);
            } else {
                if(!v) {
                    this._currentValue = 0;
                } else {
                    var find = 0;
                    for (var i = 0; i < this._refValuesValue.length; i++) {
                        if (v.toLowerCase() == this._refValuesValue[i].toLowerCase()) {
                            find = i;
                        }
                    }
                    this._currentValue = find;
                }
                this.setCurrentToTextBox(this._refValuesValue[this._currentValue]);
            }
        }
    }, 
    
    setCurrentToTextBox : function(value) {
        /// <summary>
        /// Set the value of the textbox
        /// </summary>
        /// <param name="value" type="String">
        /// Value
        /// </param>
        if (this._elementTextBox) {
            this._elementTextBox.value = value;
            this.raiseCurrentChanged(value);
            
            if (document.createEvent) {
                var onchangeEvent = document.createEvent('HTMLEvents');
                onchangeEvent.initEvent('change', true, false);
                this._elementTextBox.dispatchEvent(onchangeEvent);
            } else if( document.createEventObject ) {
                this._elementTextBox.fireEvent('onchange');
            }
        }
    },
    
    _incrementValue : function(step) {
        /// <summary>
        /// Increment the current value by the given amount
        /// </summary>
        /// <param name="step" type="Number">
        /// Amount to increment (or decrement if negative) the current value
        /// </param>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -