vue elementUI <el-input>只允许输入数字且保留两位小数

首先,el-input中type值为number

<el-input type="number" v-model= "caseData.claimMessageVo.primary" @input="numContro($event,"primary")"></el-input>

js

numContro(value,name){
    let val = (value && value.split("")) || [];
    //caseData.claimMessageVo是值所在的对象
    this.caseData.claimMessageVo[name] = val.join("").match(/^\d*(\.?\d{0,2})/g)[0] || null;
},

补充:
numContro的方法也可以更详细,提供一版稍微详细的方法

  //obj 为值所在的对象,可以根据自己的需求适当增减变量
 numContro(value, obj, list, index, name) {
      if (!value) return;
      let val = (value && value.split("")) || [];
      let sNum = val.toString();
      if (sNum.indexOf(".") === 0) {
        sNum = "0" + sNum;//若第一位直接写 . 的情况下,给首位拼接一个0
      }
      sNum = sNum.replace(/[^\d.]/g, "");  // 过滤
      sNum = sNum.replace(/\.{2,}/g, "."); //只留第一个小数点,清除多余的
      sNum = sNum
        .replace(".", "$#$")
        .replace(/\./g, "")
        .replace("$#$", ".");
      sNum = sNum.replace(/^(-)*(\d+)\.(\d\d).*$/, "$1$2.$3"); //只能输入两个小数
      if (sNum.indexOf(".") < 0 && sNum !== "") {
        sNum = parseFloat(sNum); // 控制首位不能为0
      }
      //此处将值重新赋给绑定的变量
      this[obj][list][index][name] = sNum;
    },
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值