//////////////////数字千分符
function rendererZhMoney(v,l) {
if(isNaN(v)){
return v;
//v=0;
}
if(l == undefined) l = 2;
//v = (Math.round((v - 0) * 1000)) / 1000;
v = (Math.round((v - 0) * Math.pow(10,l))) / Math.pow(10,l);
//v = (v == Math.floor(v)) ? v + ".000" : ((v * 10 == Math.floor(v * 10)) ? v
// + "00" : (v * 100 == Math.floor(v * 100)) ? v
// + "0" : v);
v = addZero(v,l);
v = String(v);
var ps = v.split('.');
var whole = ps[0];
// var sub = ps[1] ? '.' + ps[1] : '.000';
var sub = ps[1] ? '.' + ps[1] : addZero2(l);
var r = /(\d+)(\d{3})/;
while (r.test(whole)) {
// whole = whole.replace(r, '$1' + ',' + '$2',+'$3','$4','$5','$6');
whole = whole.replace(r, '$1' + ',' + '$2');
}
v = whole + sub;
return v;
}
function addZero(v,l){
for(var i=0;i<l;i++){
if(v * Math.pow(10,i) == Math.floor(v * Math.pow(10,i))){
if(i==0) v=v+".";
for(var j=0;j<l-i;j++){
v = v + "0";
}
return v;
}
}
return v;
}
function addZero2(l){
var s=".";
for(var i=0;i<l;i++){
s= s+"0";
}
return s;
}
Ext.ux.NuberFiledFormat=Ext.extend(Ext.form.NumberField, {
baseChars: "0123456789,",
setValue: function(v){
v = typeof v == 'number' ? v : String(v).replace(this.decimalSeparator, ".").replace(/,/g, "");
v = isNaN(v) ? '' : rendererZhMoney(v);
//Ext.util.Format.number(this.fixPrecision(String(v)), "0,000,000.00");此为ext 4.0
this.setRawValue(v);
return Ext.form.NumberField.superclass.setValue.call(this, v);
},
/* getValue:function(){
//alert((String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",","")));
return (String(Ext.form.NumberField.superclass.getValue.call(this)).replace(",",""));
},
*/
fixPrecision: function(value){
var nan = isNaN(value);
if (!this.allowDecimals || this.decimalPrecision == -1 || nan || !value) {
return nan ? '' : value;
}
return parseFloat(value).toFixed(this.decimalPrecision);
},
validateValue: function(value){
if (!Ext.form.NumberField.superclass.validateValue.call(this, value)) {
return false;
}
if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
return true;
}
value = String(value).replace(this.decimalSeparator, ".").replace(/,/g, "");
if (isNaN(value)) {
this.markInvalid(String.format(this.nanText, value));
return false;
}
var num = this.parseValue(value);
if (num < this.minValue) {
this.markInvalid(String.format(this.minText, this.minValue));
return false;
}
if (num > this.maxValue) {
this.markInvalid(String.format(this.maxText, this.maxValue));
return false;
}
return true;
},
parseValue: function(value){
value = parseFloat(String(value).replace(this.decimalSeparator, ".").replace(/,/g, ""));
return isNaN(value) ? '' : value;
}
});