Vue 限制input输入 保留两位小数或者多位

Vue 限制input输入 保留两位小数或者多位

在就是实际业务需求开发中,经常需要用户输入输入框的值要进行保留小数操作,利用失焦事件可以在用户失焦的时候对输入的值进行格式化,保留固定的小数点后几位。

直接上代码

// html
<el-input v-model="row.settlementRatio" @blur="handleInput1"  type="number" size="small"  placeholder="请输入"></el-input>
<el-input v-model="row.settlementRatio" @blur="handleInput2"  type="number" size="small"  placeholder="请输入"></el-input>

data() {
	return {
		row {
			settlementRatio: ''
		}
	}
}

methods: {
    handleInput1(e) {
      // 通过正则过滤小数点后四位 d{0,4}  4就代表保留四位小数
      row.settlementRatio = (e.target.value.match(/^\d*(\.?\d{0,4})/g)[0]) || null
    },
     handleInput2(e) {
      // 通过正则过滤小数点后四位 d{0,2}  2就代表保留四位小数
      row.settlementRatio = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
    },
}

也就是在失焦事件里面把值强行通过正则保留几位小数.

### 实现 Vue3 中 `@input` 事件触发时保留两位小数 为了确保在输入数值时始终保留两位小数,可以利用 Vue 的自定义指令或方法来处理输入值。下面展示如何通过监听 `@input` 事件并修改绑定的数据属性来达到这一目的。 #### 使用计算属性和侦听器的方法 这种方法涉及创建一个计算属性用于显示格式化后的值以及设置一个侦听器监控原始数据的变化: ```javascript <template> <div> <!-- 绑定到计算属性 formattedScore --> <el-input v-model="formattedScore" class="input-info" type="number" style="width: 54%; margin-left: 42px;" :disabled="indexFlag" placeholder="请输入" min="0" max="9999"> </el-input> </div> </template> <script setup> import { ref, computed } from 'vue'; const indexInfo = reactive({ score: null, }); // 假设这是控制禁用状态的标志位 let indexFlag = false; // 计算属性负责返回带有固定精度的小数值 const formattedScore = computed({ get() { return parseFloat(indexInfo.score).toFixed(2); }, set(newValue) { let parsedValue; try { // 尝试解析新值为浮点数,并限制其最多有两位小数 parsedValue = (parseFloat(newValue)).toFixed(2); } catch (_) { parsedValue = ''; } indexInfo.score = parsedValue; } }); </script> ``` 此代码片段展示了如何使用计算属性 `formattedScore` 来自动调整用户输入的内容,使其保持两个小数位[^1]。每当用户更改输入框内的内容时,都会调用 setter 函数更新实际存储于 `indexInfo.score` 属性中的值;而 getter 则会在渲染过程中提供经过格式化的字符串表示形式给视图层。 需要注意的是,在某些情况下可能还需要考虑其他边界情况,比如负号、科学计数法等特殊字符的支持。此外,如果希望进一步优化用户体验,则可以在失去焦点 (`@blur`) 或者按下回车键时才执行最终验证逻辑。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

杨小凹

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值