js限制金额输入框(最高精度为保留6位小数)
js限制金额输入框(最高精度为 保留6位小数)
说明:在一个项目中有限制6位小数的限制。在本次测试的过程中发现还存在一些bug
1.如可以长按键盘不放可输入多个小数点
2.通过长按可输入‘1...234.’
这次在解决了这个bug过程中也稍带学习了一下正则表达式,以前觉得正则表达式只是用来做字段的教研,但是现在发现用来匹配字符,并且结合各个语言提供的api能做不少事儿,这里把代码贴了出来供大家参考。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> <script> function formatMoneyWith6digts2( obj ){ var p1 = /[^\d\.]/g; // 过滤非数字及小数点 /g :所有范围中过滤 var p2 = /(\.\d{6})\d*$/g; var p4 = /(\.)(\d*)\1/g; obj.value = obj.value.replace(p1, "").replace(p2, "$1").replace(p4,"$1$2"); obj.value=obj.value.replace(/[^0-9.]/g, ''); // fix bug: many char'.' var p5 = /\.+/g; //多个点的话只取1个点,屏蔽1....234的情况 obj.value = obj.value.replace(p5, ".") var p6 = /(\.+)(\d+)(\.+)/g; //屏蔽1....234.的情况 obj.value = obj.value.replace(p6, "$1$2")// 屏蔽最后一位的. // end fix bug: many char'.' } /* testing var p5 = /\.+/g; var testStr = '1....234.' matchStr = testStr.match(p5); //alert(matchStr); num = testStr.replace(p5, ".") //alert(num); // var p6 = /(\.+)(\d+)(\.+)/g; matchStr = testStr.match(p6); alert(matchStr); num = testStr.replace(p6, "$1$2") alert(num); */ </script> </HEAD> <BODY> 至多只能输入6位小数:<input type='text' onkeyup="formatMoneyWith6digts2(this);countShuilv();" /> </BODY> </HTML>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。