金额 千分位分隔 指定小数位数
//////////////////数字千分符 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; } });