由于textbox的ontextchanged事件需要向服务器端提交后才能实现内容的变化,而且不能保证只输入数字.所以搞了半天,终于有一点小成果.可以实时的把数字转换为金额样式,并且只能为数字,后也可以输入两位有效数字.和你读出数据用的tostring("N")是差不多的,但是那个需要转换,即和ontextchanged事件一样需要失去焦点后才能显示出结果,不能实时.好,下面贴出代码.由于textbox的ontextchanged事件需要向服务器端提交后才能实现内容的变化,而且不能保证只输入数字.所以搞了半天,终于有一点小成果.可以实时的把数字转换为金额样式,并且只能为数字,后也可以输入两位有效数字.和你读出数据用的tostring("N")是差不多的,但是那个需要转换,即和ontextchanged事件一样需要失去焦点后才能显示出结果,不能实时.好,下面贴出代码.
js文件:
function formatNum(obj) { var n3; if(obj.value.split(".").length>1)//带小数点的 { n3=obj.value.split(".")[0]; } else { n3=obj.value; } var brr=new Array(); var m=0; for(i=0;i<n3.length;i+=3) { m++; } for(k=0;k<=m;k++) { obj.value=obj.value.replace(",",""); } if(isNaN(obj.value)) { alert('请填写数字!'); obj.value=""; } var n1=obj.value; if(obj.value.split(".").length>1)//带小数点的 { var n1=obj.value.split(".")[0]; var n2=obj.value.split(".")[1].substring(0,2); if(n1>3) { var tempStr=""; var arr=new Array(); var j=0; for(i=0;i<n1.length;i+=3) { arr[j] = n1.substring(n1.length-(i+3),n1.length-i);j++ } tempStr = arr.reverse(); obj.value=tempStr+"."+n2; } } else//不带小数点的 { var n1=obj.value; if(n1>3) { var tempStr=""; var arr=new Array(); var j=0; for(i=0;i<n1.length;i+=3) { arr[j] = n1.substring(n1.length-(i+3),n1.length-i);j++ } tempStr = arr.reverse(); obj.value=tempStr; } } } function out(obj) { if(obj.value.split(".").length>1)//带小数点的 { return; } else { obj.value=obj.value+".00"; } }
aspx:
<asp:TextBox ID="TextBox1" runat="server" οnkeyup= "formatNum(this);" οnfοcusοut="out(this)"></asp:TextBox>