element-ui限制输入框输入的数不小于0且整数位最多为5位小数位最多为两位

16 篇文章 0 订阅

element-ui限制输入框输入的数不小于0且整数位最多为5位小数位最多为两位

<el-input v-model="input1" placeholder="请输入内容" @keyup.native="input1 = limitControlLine(input1,5,2)"></el-input>
limitControlLine (val,zs,xs) {
  let value = val;
  if (isNaN(val)) {
    value = String(val).replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
    value = value.replace(/\.{2,}/g, '.'); // 只保留第一个. 清除多余的
    value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
  }
  if (value.charAt(0) === '0' && val.charAt(1) !== '.') {
    value = "0";
  }
  if (value.charAt(0) === '.') {
    value = "0." + value.split('.')[1] ;
  }
  if (Number(value) >Math.pow(10,zs)) {
    value = (value.split('.')[1] === undefined) ? value.substr(0,zs): value.substr(0,zs) + "." + value.split('.')[1];
  }
  if(value.indexOf('.')>0){
    value=value.slice(0,value.indexOf('.')+ (xs + 1));
  }
  return value;
},

直接上正则也是OK

 let moneyReg = /^\d{1,8}(\.\d{1,2})?$/; //匹配金额格式 最大8位整数 + 2位小数 金额直接上正则
        if (!moneyReg.test(this.currentCount)) {
          this.$message.error('输入金额格式有误,请重新输入');
          return;
        }

2. element-ui限制只能输入 0 和负数(小数位最多2位,整数位最多5位)

<el-input v-model="input1" placeholder="请输入内容" @keyup.native="input1 = limitControlLine(input1,5,2)"></el-input>

limitControlLine (val,zs,xs) {
  let value = val;
  value = value.replace(/[^\-\d.]/g,''); // 只能输入负号、小数点和数字
  value = (value.length > 1) ? value.charAt(0) + value.substr(1).replace(/[^\d.]/g,'') : value; // 确保最多只能有一个负号
  if (value !== "0" && value !== "0." && value !== "00") {
    if (value.charAt(0) === "-") {
      value = value.replace(/\.{2,}/g, '.'); // 只保留第一个. 清除多余的
      value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.');
      //如果小数点前面是负号,则变成  -0.
      if (value.length > 1 && value.charAt(0) === "-" && value.charAt(1) === "." ) {
          value = (value.split('.') !== undefined) ? "-0." + value.split('.')[1] : "-";
      }
      // 不能出现 -00这种
      if (value.length > 2 && value.charAt(0) === "-" && value.charAt(1) === "0" && value.charAt(2) !== "." ) {
        value = "-" + value.substr(2);
      }
      // 限制整数位
      if (Number(value) < -Math.pow(10,zs)) {
        value = (value.split('.')[1] === undefined) ? value.substr(0,zs + 1): value.substr(0,zs + 1) + "." + value.split('.')[1];
      }
      // 限制小数位
      if(value.indexOf('.')>0){
        value=value.slice(0,value.indexOf('.')+ (xs + 1));
      }
    } else {
      value = "";
    }
  } else {
    value = "0";
  }
  return value;
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值