金额输入限制条件
参考支付宝|微信支付的时候输入金额的限制
- 只能输入0-9和小数点”.”
- 首位不能出现两个0
- 第二位不是小数点”.”的情况下, 首位不能是0
- 首位不能出现小数点”.”
- 小数点”.”只能出现一次
- 小数点”.”后最多两位
Page({
// 格式化输入的金额
formatAmount(val) {
let num = val.toString(); // 先转换成字符串类型
if (num.indexOf('.') == 0) { // 第一位就是".", 则前面补0
num = '0' + num
}
num = num.replace(/[^\d.]/g, ""); // 清除"数字"和"."以外的字符
num = num.replace(/\.{2,}/g, "."); // 只保留第一个"."清除多余的
num = num.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 小数点后只能输入两位
if (num.indexOf(".") < 0 && num != "") {
num = parseFloat(num);
}
return num
},
// input输入事件
inputEvent(e){
this.setData({
oilAmount: this.formatAmount(e.detail.value) // money匹配金额输入规则,返回输入值
});
}
})