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>



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com