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("-")”的判断。
关于金额的格式化问题,经常遇到这种事情,觉得这个还可以,也就留着,以供以后查阅方便!