/** 使用 两种使用方法 用jquery事件绑定 $(objId).bind("onblur",function(){ formatZJNum(this); }); 在html标签上绑定 οnblur=formatZJNum(this); * 格式化金额值 * @param objId 要绑定的对象ID * @param digits 精确度 * @return */ function formatZJNum(objId,digits){ //第一步是否数字 var val=$(objId).val(); if(isNaN(val)||val==null||val==""){ $(objId).val(""); return; } //第二步是否是负数和第一位为0 var f=val.substring(0,1); if(f=="-"||f=="0"||f=="+"){ val=val.substring(1,val.length); //截取之后的字符 } //第三步求精确度 if(digits!=null&&isNaN(digits)==false&&parseInt(digits)>0){ var number=parseFloat(val); $(objId).val(number.toFixed(digits)); return; }else{ //转成整数 var number=parseFloat(val); $(objId).val(number.toFixed(0)); return; } /* 重写toFixed d默认为0~20,当d超过20的时候,JS会出错。 要修改这个缺陷,可以把js中的Number类型的toFixed方法重写 */ Number.prototype.toFixed = function(d) { var s=this+"";if(!d)d=0; if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0"); if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s)) { var s="0"+ RegExp.$2, pm=RegExp.$1, a=RegExp.$3.length, b=true; if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4) { for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1; if(a[i]==10){a[i]=0; b=i!=1;} else break;} } s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2"); }if(b)s=s.substr(1);return (pm+s).replace(/\.$/, "");} return this+""; }; }