vue3中封装输入框只能输入正整数、整数、动态保留想要的小数位数的方法

1.新建

在src/utils文件夹下新建handelSaveDigit.js文件

2.封装代码

// 限制输入框输入小数的位数
// value:是输入的值
// obj:绑定的字段所在的对象
// attr:绑定的字段
// num:限制的位数

// 只能输入正数
export function handelSaveDigits(value, obj, attr, num) {
    const reg1 = /^\d+$/; // 只能是数字的正则
    const reg = new RegExp(`^\\d*\\.?\\d{0,${num}}$`); // 动态创建匹配未超过特定小数位数的正则表达式
    const regChineseEnglish = /[\u4e00-\u9fa5a-zA-Z]+/; // 匹配中英文的正则
    if (num === 0) {
        if (!reg1.test(value)) {
            obj[attr] = value.slice(0, -1);
        }
    } else if (!reg.test(value)) {
            obj[attr] = value.slice(0, -1);
        }
    if (regChineseEnglish.test(value)) {
        obj[attr] = "";
    }
}
// 能输入负数
export function handelSaveNegativeDigits(value, obj, attr, num) {
    const reg1 = /^-?\d*$/; // 只能是数字的正则
    const reg2 = new RegExp(`^-?\\d*\\.?\\d{0,${num}}$`); // 动态创建匹配未超过特定小数位数的正则表达式
    const reg3 = /[\u4e00-\u9fa5a-zA-Z]+/; // 匹配中英文的正则

    if (num === 0) {
        if (!reg1.test(value)) {
            obj[attr] = value.slice(0, -1);
        }
    } else if (!reg2.test(value)) {
        obj[attr] = value.slice(0, -1);
    }

    if (reg3.test(value)) {
        obj[attr] = "";
    }
}

3.引入使用

// 在想要做限制的vue组件中引入使用
<el-col :span="12">
    <el-form-item label="应付金额:" >
        <el-input v-model="processingProgressForm.payableAmount" placeholder="请输入"
            @input="e => handelSaveDigits(e, processingProgressForm, 'payableAmount', 2)" />
    </el-form-item>
</el-col>


import { handelSaveDigits } from "@/utils/handelSaveDigit"; // 限制小数位数
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

4.说明

@input="e => handelSaveDigits(e, processingProgressForm, 'payableAmount', 2)"

e:是输入的值

processingProgressForm:绑定的字段所在的对象

payableAmount:绑定的字段

2:限制的位数

以上4个参数为必传值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现Vue输入框只能输入整数方法有以下几种: 1. 使用正则表达式验证:可以通过在输入框的`input`事件监听用户输入的内容,并使用正则表达式进行验证。在Vue可以通过指令`v-model`和`@input`来实现这一功能。代码如下: ```html <template> <div> <input type="text" v-model="inputValue" @input="handleInput"> </div> </template> <script> export default { data() { return { inputValue: '' } }, methods: { handleInput() { this.inputValue = this.inputValue.replace(/\D/g, ''); } } } </script> ``` 在`handleInput`方法,使用`this.inputValue.replace(/\D/g, '')`将非字的字符替换为空字符,从而只保留输入框字。 2. 使用自定义指令:Vue的自定义指令可以方便我们对DOM元素进行操作和控制。代码如下: ```html <template> <div> <input type="text" v-model="inputValue" v-number> </div> </template> <script> export default { data() { return { inputValue: '' } }, directives: { number: { bind(el) { el.handler = function() { el.value = el.value.replace(/\D/g, ''); }; el.addEventListener('input', el.handler); }, unbind(el) { el.removeEventListener('input', el.handler); } } } } </script> ``` 在自定义指令`number`的`bind`方法,定义了一个事件处理函`el.handler`,处理函将非字的字符替换为空字符。然后通过`addEventListener`将事件绑定到输入框的`input`事件上,从而实现只能输入整数的效果。在`unbind`方法,解绑了事件防止内存泄漏。 无论是使用正则表达式验证还是自定义指令,在输入框输入字的字符就会被过滤,只保留整数。 ### 回答2: Vue输入框默认是可以输入任意字符的,包括整数、小和其他特殊字符。但是我们可以通过限制输入的字符类型,使输入框只能输入整数。 一种常用的方法是使用Vue的指令,通过监听输入框输入事件,检测输入的字符是否为整数。如果不是整数,则阻止字符的输入。 在Vue模板,我们可以这样定义一个输入框: ``` <input v-model="num" v-on:input="checkInt" type="text"> ``` 在Vue实例,我们可以定义checkInt方法来检测输入的字符是否为整数: ``` data() { return { num: '' } }, methods: { checkInt() { // 使用正则表达式检查输入的字符是否为整数 this.num = this.num.replace(/\D/g, ''); } } ``` 在checkInt方法,我们使用了正则表达式`\D`来匹配非字字符,然后使用replace方法将非字字符替换为空字符串,从而只保留整数部分。 通过这样的设置,我们就可以实现只能输入整数输入框了。当用户输入一个非字字符时,它会在输入框被直接删除。注意,这种方法只是在用户输入的时候进行限制,如果通过其他方式改变输入框的值(比如通过代码动态设置输入框的值),这些限制就不会生效了。 ### 回答3: 在Vue,可以通过一些方法实现只允许输入整数输入框。以下是一种可能的解决方案: 1. 使用Vue的v-model指令绑定输入框的值,例如:v-model="inputValue"。 2. 在Vue的data选项定义inputValue变量,用于保存输入框的值。 3. 使用Vue的watch选项来监测inputValue的变化,当其发生变化时执行相应的操作。 4. 在watch选项,使用正则表达式来判断inputValue是否为整数,如果不是整数,则将其设置为最近一次的有效整数输入值。 5. 在输入框的模板,可以加入input事件监听函,当输入框的值发生变化时,触发该函。 6. 在input事件监听函,可以使用JavaScript的isNaN()函来判断输入的值是否为字,如果不是字,则设置输入框的值为最近一次的有效整数输入值。 上述方法的实现思路是通过监测输入框的值的变化,当输入框的值不符合要求时,将其重置为最近一次的有效整数输入值。这样就可以保证输入框只能输入整数。注意,这只是一种解决方案,并不是唯一的方法。根据具体需求,也可以采用其他方式实现限制输入整数的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值