金额 千分位分隔 指定小数位数详解编程语言

 //////////////////数字千分符  
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;    
}    
}); 

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/13228.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论