引言:金额输入时,需求如下:
1)首位不能出现0或者小数点(.)
2)仅保留两位小数
3)仅保留一个小数点(.),不允许出现多个。
1.wxml核心代码:
<!-- 1.adjust-position:true 键盘弹起时,是否自动上推页面 2.bindinput="inputedit":类似双向绑定,实现实时获取输入框值 3.type='digit' 带小数点的数字键盘-->
<input type='digit' class='n-input' placeholder='请输入充值金额' bindinput="inputedit" adjust-position="true" value="{{moneyNum}}"/>
2.js核心代码:
data: { // 用户输入的金额 moneyNum:null }, /** * @method: 双向绑定,实时获取输入框值 * @params: event形参必须有,返回输入框相关对象 */ inputedit:function(event){ this.setData({ moneyNum: this.money(event.detail.value) //money匹配金额输入规则,返回输入值 }); }, /** * @method: 金额输入限制 * @params: val接收number值 */ money(val) { let num = val.toString(); //先转换成字符串类型 if (num.indexOf('.') == 0) { //第一位就是 . num = '0' + num } num = num.replace(/[^d.]/g, ""); //清除“数字”和“.”以外的字符 num = num.replace(/.{2,}/g, "."); //只保留第一个. 清除多余的 num = num.replace(".", "$#$").replace(/./g, "").replace("$#$", "."); num = num.replace(/^(-)*(d+).(dd).*$/, '$1$2.$3'); //只能输入两个小数 if (num.indexOf(".") < 0 && num != "") { num = parseFloat(num); } return num }
结果如下图: