el-input限制输入数字,输入中文后数字校验失效

想要的效果:默认值为0,只能输入0-100的数字。

实现方式如下,使用 οnkeyup="this.value=this.value.replace(/\D/g,'')"限制只能输入数字,输入数字没有问题,使用@input实现数字不以0开头,也只能是0-100。但是当输入汉字时,确实没有显示上去,再输入数字能正常显示输入,但是校验不起作用了,超100的数字也能输入。

复制代码
<el-input v-model="num1" maxlength="3"  onkeyup="this.value=this.value.replace(/\D/g,'')" @input="rowNumSingle"/>

rowNumSingle(value ) {
if (value === '0' || !value.startsWith('0')) {
          this.num1 = value
        } else {
          // 以0开头
          this.num1 = value[0] === '0' ? '0' : value.replace(/^0+/, '')
        }
        // 最大100
        this.num1 = Math.min(100, Math.max(0, value))
}

修改后的实现:先判断是否为数字,不是数字直接设为初始值0,否获取输入的数字并赋值

复制代码
<el-input v-model="num1"  maxlength="3"  @input="rowNumSingle" />

if(isNaN(Number(value)) || value === '' ){
         this.num1 = 0
        return
      }
      const newValue = Number(value)
      this.num1 = newValue
        // 最大100
        this.num1 = Math.min(100, Math.max(0, newValue))
相关推荐
Fisschl20 小时前
Vue 封装 Echarts 组件
vue.js
FrontAI20 小时前
深入浅出 LangChain —— 第三章:模型抽象层
前端·人工智能·typescript·langchain·ai agent
givemeacar20 小时前
spring-boot-starter和spring-boot-starter-web的关联
前端
leoZ23121 小时前
金仓老旧项目改造-10
开发语言·前端·人工智能·python·金仓
接着奏乐接着舞21 小时前
react redux Toolkit 分组更推荐
前端·javascript·react.js
笨笨狗吞噬者21 小时前
uni-app 运行时揭秘:styleIsolation 的转化
前端·微信小程序·uni-app
前端那点事1 天前
Vue路由跳转全场景实战(Vue2+Vue3适配)| 新手必看
vue.js
是席木木啊1 天前
告别console.log!Vue3项目日志框架选型指南
前端·vue3·日志框架
凰轮1 天前
TypeScript 知识点总结
前端·javascript·typescript
Hello--_--World1 天前
JS:闭包、函数柯里化、工厂函数、偏函数、立即执行函数 相关知识点与面试题
开发语言·javascript·ecmascript