实现输入框只能输入数值,且限制小数位数

最终实现效果:不可输入数字和小数点以外的,且不能多次输入小数点,输入小数位数超过限制的话将不允许再往后输入

 

// 监听可输入小数的数字输入框的 input事件

// 参数一value,输入的值,参数二obj,监听的对象,参数三prop,监听的属性

export function floatInputChange(value, obj, prop) {

  if (!obj || !prop || !value) {

    return

  }

  // 不允许只输入小数点

  if (value === '.') {

    obj[prop.toString()] = ''

    return

  }

  // 不可输入数字和小数点以外的,且不能多次输入小数点

  obj[prop.toString()] = value.replace(/[^0-9.]/g, '').replace(/(\.)(\d*)(\1*)/g, '$1$2')

  const Decimals = obj[prop.toString()].split('.')[1]

  // 输入小数位数超过限制的话,截取前面几位

  // floatDigit是项目中配置文件中的小数位数变量

  if (Decimals && Decimals.length > floatDigit) {

    obj[prop.toString()] = obj[prop.toString()].substring(0, obj[prop.toString()].indexOf('.') + floatDigit + 1)

  }

}

注意事项:

只能监听el-input输入框的input事件,el-input-number组件的input事件拿不到当前输入框的值,只能拿到此次输入的一个字符,且该组件input事件不会一输入值就触发,触发时机跟change事件一致 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值