昨天写小程序项目,在输入金额的框上也只是简单的为 input 设置了"type=‘number’";
并设置了一定的限制
money.value = money.value.replace(".","$#$").replace(/\./g, "").replace("$#$", ".");//只允许存在一个点
money.value = money.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数
可惜猝不及防的不足——验收:“来一个手贱的人,乱输数字,乱点怎么办?”
00000015.21——虽然结果仍是15.21,但是确实不好看,偷懒是过了点。
所以在此补充一波(三者换汤不换药):
//js(原生)
var money = document.getElementById('money');
money.addEventListener('keyup',function () {
money.value = money.value.replace(".","$#$").replace(/\./g, "").replace("$#$", ".");//只允许存在一个点
money.value = money.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数
//需要注意$3处(‘\d\d).’)的那个点,见下图
if (money.value.indexOf(".") < 0 && money.value != "") { //此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
money.value = parseFloat(money.value); //parseFloat:字符串中第一个小数点是有效的,而第二个小数点就是无效的了
} else if (money.value.indexOf