直接贴代码了,在输入的时候就对其进行限制
<el-input v-model="price" @input="val => fprice = formatPrice(val)" maxlength="20"></el-input>
formatPrice(value) {
// 移除非数字和小数点的字符
let formattedValue = value.replace(/[^0-9.]/g, '');
// 处理多余的小数点,保留第一个小数点前的所有字符
let dotIndex = formattedValue.indexOf('.');
if (dotIndex !== -1) {
// 只保留第一个小数点后的部分
formattedValue = formattedValue.substring(0, dotIndex + 1) + formattedValue.substring(dotIndex + 1).replace(/\./g, '');
}
// 分割整数部分和小数部分
const parts = formattedValue.split('.');
// 如果小数部分存在,确保小数部分最多有两位
if (parts[1] !== undefined) {
parts[1] = parts[1].substring(0, 2);
}
// 重新组合整数部分和小数部分
formattedValue = parts.join('.');
// 返回格式化后的值
return formattedValue;
},