root / trunk / web / dojo / dijit / form / NumberTextBox.js
History | View | Annotate | Download (2.98 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dijit.form.NumberTextBox"]){ |
| 9 |
dojo._hasResource["dijit.form.NumberTextBox"]=true; |
| 10 |
dojo.provide("dijit.form.NumberTextBox");
|
| 11 |
dojo.require("dijit.form.ValidationTextBox");
|
| 12 |
dojo.require("dojo.number");
|
| 13 |
dojo.declare("dijit.form.NumberTextBoxMixin",null,{regExpGen:dojo.number.regexp,value:NaN,editOptions:{pattern:"#.######"},_formatter:dojo.number.format,_setConstraintsAttr:function(_1){ |
| 14 |
var _2=typeof _1.places=="number"?_1.places:0; |
| 15 |
if(_2){
|
| 16 |
_2++; |
| 17 |
} |
| 18 |
if(typeof _1.max!="number"){ |
| 19 |
_1.max=9*Math.pow(10,15-_2); |
| 20 |
} |
| 21 |
if(typeof _1.min!="number"){ |
| 22 |
_1.min=-9*Math.pow(10,15-_2); |
| 23 |
} |
| 24 |
this.inherited(arguments,[_1]); |
| 25 |
if(this.focusNode&&this.focusNode.value&&!isNaN(this.value)){ |
| 26 |
this.set("value",this.value); |
| 27 |
} |
| 28 |
},_onFocus:function(){ |
| 29 |
if(this.disabled){ |
| 30 |
return;
|
| 31 |
} |
| 32 |
var _3=this.get("value"); |
| 33 |
if(typeof _3=="number"&&!isNaN(_3)){ |
| 34 |
var _4=this.format(_3,this.constraints); |
| 35 |
if(_4!==undefined){ |
| 36 |
this.textbox.value=_4;
|
| 37 |
} |
| 38 |
} |
| 39 |
this.inherited(arguments); |
| 40 |
},format:function(_5,_6){ |
| 41 |
var _7=String(_5);
|
| 42 |
if(typeof _5!="number"){ |
| 43 |
return _7;
|
| 44 |
} |
| 45 |
if(isNaN(_5)){
|
| 46 |
return ""; |
| 47 |
} |
| 48 |
if(!("rangeCheck" in this&&this.rangeCheck(_5,_6))&&_6.exponent!==false&&/\de[-+]?\d/i.test(_7)){ |
| 49 |
return _7;
|
| 50 |
} |
| 51 |
if(this.editOptions&&this._focused){ |
| 52 |
_6=dojo.mixin({},_6,this.editOptions);
|
| 53 |
} |
| 54 |
return this._formatter(_5,_6); |
| 55 |
},parse:dojo.number.parse,_getDisplayedValueAttr:function(){ |
| 56 |
var v=this.inherited(arguments); |
| 57 |
return isNaN(v)?this.textbox.value:v; |
| 58 |
},filter:function(_8){ |
| 59 |
return (_8===null||_8===""||_8===undefined)?NaN:this.inherited(arguments); |
| 60 |
},serialize:function(_9,_a){ |
| 61 |
return (typeof _9!="number"||isNaN(_9))?"":this.inherited(arguments); |
| 62 |
},_setValueAttr:function(_b,_c,_d){ |
| 63 |
if(_b!==undefined&&_d===undefined){ |
| 64 |
_d=String(_b); |
| 65 |
if(typeof _b=="number"){ |
| 66 |
if(isNaN(_b)){
|
| 67 |
_d="";
|
| 68 |
}else{
|
| 69 |
if(("rangeCheck" in this&&this.rangeCheck(_b,this.constraints))||this.constraints.exponent===false||!/\de[-+]?\d/i.test(_d)){ |
| 70 |
_d=undefined;
|
| 71 |
} |
| 72 |
} |
| 73 |
}else{
|
| 74 |
if(!_b){
|
| 75 |
_d="";
|
| 76 |
_b=NaN;
|
| 77 |
}else{
|
| 78 |
_b=undefined;
|
| 79 |
} |
| 80 |
} |
| 81 |
} |
| 82 |
this.inherited(arguments,[_b,_c,_d]); |
| 83 |
},_getValueAttr:function(){ |
| 84 |
var v=this.inherited(arguments); |
| 85 |
if(isNaN(v)&&this.textbox.value!==""){ |
| 86 |
if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)&&(new RegExp("^"+dojo.number._realNumberRegexp(dojo.mixin({},this.constraints))+"$").test(this.textbox.value))){ |
| 87 |
var n=Number(this.textbox.value); |
| 88 |
return isNaN(n)?undefined:n; |
| 89 |
}else{
|
| 90 |
return undefined; |
| 91 |
} |
| 92 |
}else{
|
| 93 |
return v;
|
| 94 |
} |
| 95 |
},isValid:function(_e){ |
| 96 |
if(!this._focused||this._isEmpty(this.textbox.value)){ |
| 97 |
return this.inherited(arguments); |
| 98 |
}else{
|
| 99 |
var v=this.get("value"); |
| 100 |
if(!isNaN(v)&&this.rangeCheck(v,this.constraints)){ |
| 101 |
if(this.constraints.exponent!==false&&/\de[-+]?\d/i.test(this.textbox.value)){ |
| 102 |
return true; |
| 103 |
}else{
|
| 104 |
return this.inherited(arguments); |
| 105 |
} |
| 106 |
}else{
|
| 107 |
return false; |
| 108 |
} |
| 109 |
} |
| 110 |
}}); |
| 111 |
dojo.declare("dijit.form.NumberTextBox",[dijit.form.RangeBoundTextBox,dijit.form.NumberTextBoxMixin],{});
|
| 112 |
} |