el-input-number踩坑(禁止输入)

最近使用 el-input-number 计数器之前都是限制大小取值,今天想要禁止输入只使用加减号;

<el-input-number v-model="xxx" @keydown.native="channelInputLimit" @change="handleChange" :min="1" :max="10" ></el-input-number>
             
channelInputLimit(e) {
  e.returnValue = ''
},

### 实现方案 为了确保 `el-input-number` 组件仅接受数字输入并阻止其他字符(如 `e`, `E`, `+`, `-`),可以采用多种方式来处理这个问题。 #### 方法一:通过监听器过滤非法字符 可以在 `input` 或者 `change` 事件中加入正则表达式的验证逻辑,从而实时清理掉不符合条件的字符[^1]。下面是一个具体的例子: ```javascript <template> <div> <!-- 使用自定义指令 --> <el-input-number v-model="num" @input="handleInput"></el-input-number> </div> </template> <script> export default { data() { return { num: '' }; }, methods: { handleInput(value) { // 清除非数字字符 const cleanedValue = String(value).replace(/[^0-9]/g, ''); if(cleanedValue !== value){ this.num = Number(cleanedValue); } } } }; </script> ``` 这种方法简单有效,在每次用户尝试修改数值时都会触发一次校验操作,并自动修正任何不合法的内容。 #### 方法二:利用全局函数进行预处理 如果项目中有多个地方需要用到类似的限制功能,则可以通过扩展 Vue 原型链的方式创建一个通用的方法来进行统一管理[^3]。这样做的好处是可以减少重复代码量的同时也提高了维护效率。 ```javascript // main.js 中添加如下配置 Vue.prototype.validOnlyDigits = function (value) { return String(value).replace(/[^0-9]/g, ""); }; <!-- 然后在模板里调用此方法 --> <template> <div> <el-input-number :formatter="(val)=>validOnlyDigits(val)" parser={(val)=>validOnlyDigits(val)}></el-input-number> </div> </template> ``` 这里使用了 Element Plus 提供的 `formatter` 和 `parser` 属性,它们分别用于显示前后的数据转换工作。当用户输入的数据经过这些属性传递给组件内部之前会被先做一轮清洗,确保最终保存下来的都是纯数字形式。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值