/* Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit.form.NumberSpinner"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dijit.form.NumberSpinner"] = true; dojo.provide("dijit.form.NumberSpinner"); dojo.require("dijit.form._Spinner"); dojo.require("dijit.form.NumberTextBox"); dojo.declare("dijit.form.NumberSpinner", [dijit.form._Spinner, dijit.form.NumberTextBoxMixin], { // summary: // Extends NumberTextBox to add up/down arrows and pageup/pagedown for incremental change to the value // // description: // A `dijit.form.NumberTextBox` extension to provide keyboard accessible value selection // as well as icons for spinning direction. When using the keyboard, the typematic rules // apply, meaning holding the key will gradually increase or decrease the value and // accelerate. // // example: // | new dijit.form.NumberSpinner({ constraints:{ max:300, min:100 }}, "someInput"); adjust: function(/*Object*/ val, /*Number*/ delta){ // summary: // Change Number val by the given amount // tags: // protected var tc = this.constraints, v = isNaN(val), gotMax = !isNaN(tc.max), gotMin = !isNaN(tc.min) ; if(v && delta != 0){ // blank or invalid value and they want to spin, so create defaults val = (delta > 0) ? gotMin ? tc.min : gotMax ? tc.max : 0 : gotMax ? this.constraints.max : gotMin ? tc.min : 0 ; } var newval = val + delta; if(v || isNaN(newval)){ return val; } if(gotMax && (newval > tc.max)){ newval = tc.max; } if(gotMin && (newval < tc.min)){ newval = tc.min; } return newval; }, _onKeyPress: function(e){ if((e.charOrCode == dojo.keys.HOME || e.charOrCode == dojo.keys.END) && !(e.ctrlKey || e.altKey || e.metaKey) && typeof this.get('value') != 'undefined' /* gibberish, so HOME and END are default editing keys*/){ var value = this.constraints[(e.charOrCode == dojo.keys.HOME ? "min" : "max")]; if(typeof value == "number"){ this._setValueAttr(value, false); } // eat home or end key whether we change the value or not dojo.stopEvent(e); } } }); }