本文介绍如何在 Vue 和 Element UI 环境下,通过结合 oninput 原生事件与 @input 自定义方法,限制 el-input 仅允许输入浮点数。方案涵盖数字、小数点及正负号的过滤,解决多小数点、中文拼音干扰及格式校验问题,确保输入即时合规。
前言背景:
本文主要记录如何在 el-input 组件中限制用户仅能输入浮点数值。需要明确的是,这里的限制是指在用户输入过程中实时拦截非法字符,而非在提交表单时才进行校验并提示错误。

解决之路:
在 Vue 开发中,限制 input 输入通常涉及监听 @input、@input.native、onkeyup 或 oninput 等事件,有时也会用到 @blur 和 @change。但本文的核心需求是确保在输入阶段就只允许浮点型数据,即数字、小数点以及可选的正负号。
因此,本文记录的方法专门针对 Element UI 的 el-input 组件,采用双重限制策略来确保输入的有效性。
<el-input type="text" ref="contentInput" v-model="oneData.content"
oninput ="value = value.replace(/[^0-9.-]/g,'')"
@input="handleInput('content')"
@change="changedata"
></el-input>第一步是输入内容的实时替换,仅允许数字、小数点(.)和减号(-)存在。
如果仅使用上述替换逻辑,用户可能会输入多个小数点,这不符合浮点数的格式规范,即便是从外部粘贴的内容也需要符合格式要求。
oninput ="value = value.replace(/[^0-9.-]/g,'')"第二步是校验格式的替换处理。
虽然单独使用此方法也能实现部分限制,但在用户输入中文时,拼音字符可能会意外进入输入框,导致显示异常。
handleInput(name){
this.oneData[name] = this.oneData[name]
.replace(/[^\-\d.]/g, '') //只能输入 数字 小数点 -
.replace(/\-{2,}/g, "-") // 只能出现一次-
.replace(/^0+(\d)/, '$1') //如果第一位是 0 就替换成后面的数字
.replace(/^\./, '0.') //如果第一位是 . 就 替换成 0.
.match(/^[\d\-]*(\.?\d{0,5})/g)[0] || '' //开头只能允许数字或者 -
},将上述两种限制同时应用后,即可严格限制输入内容。如果您有其他更优的解决方案,欢迎在评论区交流。
到此这篇关于 el-input 怎么限制输入只允许输入浮点型的文章就介绍到这了,更多相关el-input限制输入内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!