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
}
相关推荐
nnnnna4 小时前
watch监听(一篇文章彻底搞懂watch监听)
前端·vue.js
A-程序设计5 小时前
基于Spring Boot+Vue的生活用品购物平台设计与实现-(源码+LW+可部署)
vue.js·spring boot·后端
程序员小寒5 小时前
Vue.js 为什么要推出 Vapor Mode?
前端·javascript·vue.js
前端老曹5 小时前
Jspreadsheet CE V5 使用手册(保姆版) 二
开发语言·前端·vue.js·学习
老华带你飞6 小时前
动物救助|流浪狗救助|基于Springboot+vue的流浪狗救助平台设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·流浪动物救助平台
5335ld6 小时前
vue2 直播地址播放 兼容浏览器
前端·vue.js
哆啦A梦15886 小时前
60 订单页选择收货地址
前端·javascript·vue.js·node.js
youyu-youyu6 小时前
h5 签名 vue
javascript·vue.js·ecmascript
梦6507 小时前
VUE树形表格组件如何自定义展开箭头以及箭头位置
javascript·vue.js·elementui
一 乐7 小时前
数码商城系统|电子|基于SprinBoot+vue的数码商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·springboot