vue3 @input 保留两位小数
时间: 2025-03-26 10:20:19 浏览: 36
### 实现 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`) 或者按下回车键时才执行最终验证逻辑。
阅读全文
相关推荐

















