uniapp,input框校验,type为digit。限定input输入整数,以及精确到小数点后两位的数。用于输入价格的场景。

1,025 阅读1分钟

原文链接:blog.csdn.net/wzy_cs/arti…

相比原文,本人新增一些注释。本文仅供参考,如有误点,还望指教。

在template中

<input type="digit" v-model="Recharge" @input="inputReg" class="sddhs_sdncaincin" />

在method中

inputReg(e) {
    console.log('e是:', e);
    let price = e.detail.value
    if (price.indexOf(".") == 0) {
            //'首位小数点情况'
            price = price.replace(/[^$#$]/g, "0."); 
            // 这个正则表达式 /\.{2,}/g 匹配两个或更多连续的点。
            price = price.replace(/\.{2,}/g, ".");
           
    }
    //match()方法,检索一个字符串匹配正则表达式的结果,并将符合的字符串,按数组的形式返回。
    // /^\d*(\.?\d{0,2})/g 匹配以数字开头的字符串,后面可以跟一个可选的小数点和最多两位数字
    price = price.match(/^\d*(\.?\d{0,2})/g)[0] || null;
    
    
    //重新赋值
    this.$nextTick(() => {
            this.Recharge = price;
    });
},