input 设置为text,number类型能输入负值和 ‘e’

export const getNumber = (val,oldval, l) => {  //val新值,oldval旧值,l,小数点后面保留的位数
    var reg2 = /^\d+(\.\d{0,2})?$/
  let mum = val
  let nmb = l + 1
  if (!reg2.test(val)) {
    mum = parseFloat(val)
  }
  if (val[0] === '0' && val[1] !== '.' && val.toString().length > 1) {
    mum = val.replace(/^0+/, '')
  }
  if (val[0] === '0' && val[1] === '0' && val.toString().length > 1) {
    mum = 0
  }
  let i = val.toString().indexOf('.')
  if (val.toString().indexOf('.') > 0 && val.toString().length > (val.toString().indexOf('.') + 2)) {
    mum = val.toString().substring(0, i + nmb)
  }
  if (isNaN(val)) {
    mum = oldval
  }
  if (val === '' || val == null) {
    mum = ''
  }
  return mum
}

  1. 这种小数点后面没数字的 需要在失去焦点的时候提示用户,或者给input绑定一个失去焦点触发的方法,如果失去焦点最后一个是小数点的话就去掉小数点
    遇见问题,留作参考
Logo

前往低代码交流专区

更多推荐