el-input数字类型禁止+-符号输入

使用 el-input 的数字类型输入时,会默认开放-+e符号输入,且无法通过onInput进行拦截。

html 复制代码
<el-input
    v-model="input"
    type="number"
    placeholder="请输入内容"
    @input="onInput"
></el-input>
js 复制代码
function onInput (value) {
    const val = value.toString().replace(/[^\d/.]/g, '');
    input.value = val
}

以上方法无法正确响应,原因有二:

  1. number类型将 -+e 识别为数字符号,不做限制,且符号的输入不会精确触发input响应;
  2. 首次接收到 -+e 输入后,返回剔除掉的文本回显,无法正确显示,原生input会内部转义,导致无法即显。

方案

可监听原生input方法,即可规避问题1;回显赋值时,同时更改原生inputvalue值,即可。 需要注意的是,该方案依赖Event中的属性data,对于兼容性要求高的场景,需谨慎处理。

html 复制代码
<el-input
    v-model="input"
    type="number"
    placeholder="请输入内容"
    @input.native="onInput"
></el-input>
js 复制代码
function onInput (e) {
    const target = e.target;
    const value = target.value;
  
    if( [ '-', '+', 'e' ].includes(e.data) ) {
        target.value = offset.value[key] + '';
    }
    const val = value.toString().replace(/[^\d/.]/g, '');
    input.value = val
}
相关推荐
Irene19918 小时前
Vue 官方推荐:kebab-case(短横线命名法)
javascript·vue.js
一只小阿乐10 小时前
vue-web端实现图片懒加载的方
前端·javascript·vue.js
+VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
萌萌哒草头将军11 小时前
Node.js 存在多个严重安全漏洞!官方建议尽快升级🚀🚀🚀
vue.js·react.js·node.js
这个图像胖嘟嘟11 小时前
前端开发的基本运行环境配置
开发语言·javascript·vue.js·react.js·typescript·npm·node.js
北辰alk11 小时前
Vue 自定义指令生命周期钩子完全指南
前端·vue.js
是小崔啊11 小时前
03-vue2
前端·javascript·vue.js
北辰alk13 小时前
Vue 路由跳转完全指南:8种跳转方式深度解析
vue.js
北辰alk13 小时前
Vue v-for 遍历对象顺序完全指南:从混乱到可控
vue.js
m0_4711996313 小时前
【场景】如何快速接手一个前端项目
前端·vue.js·react.js