vue3 el-input 只能输入数字

设置 el-input 的 type 属性为 number 来限制输入数字

<el-input v-model="inputValue" type="number"></el-input>

使用正则表达式过滤

<template>
  <el-input v-model="inputValue" onkeyup="value=value.replace(/[^\d.]/g,'')"></el-input>
</template>

### 实现 `el-input` 组件只允许输入数字 为了使 `el-input` 组件仅接受数字输入,在 Vue 3 中可以通过多种方式实现这一功能。以下是几种推荐的方式: #### 使用正则表达式过滤非数字字符 通过监听 `@input` 或者原生的 `oninput` 事件,可以在每次用户输入时使用 JavaScript 的正则表达式去除任何不符合条件的内容。 ```html <template> <div> <!-- 使用 @input 修饰符 --> <el-input v-model="value1" placeholder="请输入" @input="handleInput"></el-input> <!-- 或者直接在 HTML 属性中定义 --> <el-input v-model="value2" oninput="this.value = this.value.replace(/[^\d]/g, &#39;&#39;)"></el-input> </div> </template> <script setup> import { ref } from &#39;vue&#39;; const value1 = ref(&#39;&#39;); const handleInput = (event) => { value1.value = event.target.value.replace(/[^\d]/g, &#39;&#39;); }; const value2 = ref(&#39;&#39;); </script> ``` 这种方式能够有效地阻止除数字外的所有字符被录入到输入框内[^2]。 #### 设置 input 类型为 number 另一种简单有效的方法就是将 `<el-input>` 的类型设置为 `"number"`,这不仅可以让浏览器自动处理大部分非法输入的情况,还能提供更好的用户体验,比如上下箭头调整数值等功能。 ```html <template> <el-input v-model.number="numberValue" type="number" placeholder="请输入数字..."></el-input> </template> <script setup> import { ref } from &#39;vue&#39;; const numberValue = ref(null); </script> ``` 需要注意的是,当设置了 `type="number"` 后,默认情况下不允许输入小数点以外的小数部分;如果希望支持浮点数,则需额外考虑如何保留一位或多位小数[^3]。 #### 自定义指令限制输入内容 对于更复杂的需求,还可以创建自定义指令来增强组件的行为。这种方法适用于需要跨多个页面重复使用的场景。 ```javascript // main.js or wherever you initialize your app app.directive(&#39;limit-to-digits&#39;, { mounted(el) { el.addEventListener(&#39;input&#39;, () => { let newValue = el.value.replace(/\D/g, &#39;&#39;); // 移除非数字字符 if (newValue !== el.value) { el.value = newValue; } }); }, }); ``` 之后就可以像这样应用这个新指令了: ```html <el-input v-model="limitedValue" v-limit-to-digits></el-input> ``` 这种做法的好处是可以很容易地扩展逻辑以适应不同的业务规则,而不需要修改原始模板代码[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海天胜景

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值