asp.net+js实现金额格式化
根据用户需求,在输入金额时要格式化,即每三位数字加逗号分隔,并保留两位小数。
考虑到用户的体验,随使用JS对金额进行格式化,前台代码如下:
<asp:TextBoxID="txtAmount"runat="server"onkeypress="check()"onkeyup="run(this)"></asp:TextBox>
JS代码如下:
//======检查输入的是否为数字 functioncheck(){ if(!((window.event.keyCode>=48&&window.event.keyCode<=57)||window.event.keyCode==46||window.event.keyCode==45)){ window.event.keyCode=0 } } //======格式化文本框的金额 functionrun(obj){ varobjvalue=obj.value.replace(/[,]/g,""), objlength=objvalue.length, dtmp=objvalue.indexOf("."), neg=objvalue.indexOf("-"); varinttmp=0, floattmp=-1; if(dtmp!=-1){ inttmp=dtmp==0?"0":newString(objvalue).substring(0,dtmp); floattmp=newString(objvalue).substring(dtmp+1,objlength+1); floattmp=floattmp.replace(/[^0-9]/g,""); } else{ inttmp=objvalue; } if(neg==0){ inttmp=inttmp.replace(/[-]/g,""); } inttmp=inttmp.replace(/[^0-9]/g,""); vartmp="",str="0000"; for(;inttmp.length>3;){ vartemp=newString(inttmp/1000); if(temp.indexOf(".")==-1){ tmp=",000"+tmp; inttmp=temp; } else{ varle=newString(temp).split(".")[1].length; tmp=","+newString(temp).split(".")[1]+str.substring(0,3-le)+tmp; inttmp=newString(temp).split(".")[0]; } } inttmp=inttmp+tmp; obj.value=neg==0?"-"+inttmp+runing(floattmp):inttmp+runing(floattmp); } //======整理小数部分 functionruning(val){ if(val!="-1"&&val!=""){ varvalvalue=0+"."+val; if(val.length>=2){ valvalue=parseFloat(valvalue).toFixed(2); } vartemp="."+valvalue.split(".")[1]; returntemp; } elseif(val!="0"&&val==""){ return"."; } else{ return""; } }
同时因为金额可输入负数,所以加上“neg=objvalue.indexOf("-")”的判断。
关于金额的格式化问题,经常遇到这种事情,觉得这个还可以,也就留着,以供以后查阅方便!