普通版:
<el-input type="number" @keyup.native="proving2($event)" class="input left align-right" v-model.trim="numData"></el-input>
//**看着比较长是不是呵呵呵~~ 不一定全要用到 自行粘贴~!!!!!!!!!!!!!!!!!**
getBit (value, bit) {
let str = Number(value);
str = str.toFixed(bit)
console.log(str)
return str;
},
proving2(e) {
console.log(e.target.value)
console.log(this.getBit(e.target.value,1))
var keynum = window.event ? e.keyCode : e.which; //获取键盘码
var keychar = String.fromCharCode(keynum); //获取键盘码对应的字符
if (keynum ==189||keynum == 109) { //禁止输入负数
this.$message.warning('禁止输入负数')
e.target.value = 0
}
if(e.target.value.indexOf('.') ==1){ //如果值里面有’.‘的话,进去检测位小数点大于1位的话只保留一位
var x = String(e.target.value).indexOf(".")+1;//得到小数点的位置
var y = String(e.target.value).length - x;//小数点的位数
if(y>1){
e.target.value = this.getBit(e.target.value,1)
}
}
if(e.target.value>100){ //大于100分时候设置100分
this.$message.warning('最高分值为100分')
e.target.value = 100
}
if(e.target.value==100){ //当100分时候去掉小数点
if (keynum ==189|| keynum==190||keynum == 109) {
e.target.value = 100
}
}
},
升级版
/**
*
* @param {*} value 传入的值
* @param {*} minValue 最小值
* @param {*} maxValue 最大值
* @param {*} decimalPlaces 保留几位
* @returns
*/
export function handleInputWithMaxValue(value, minValue, maxValue, decimalPlaces) {
// 清除非数字和小数点字符
const cleanedValue = value.replace(/[^\d.]/g, '');
// 限制最小值
const numericValue = parseFloat(cleanedValue);
if (!isNaN(numericValue) && numericValue < minValue) {
return `${minValue}`;
}
// 限制最大值
if (!isNaN(numericValue) && numericValue > maxValue) {
return `${maxValue}`;
}
// 如果输入为空,直接返回
if (cleanedValue === '') {
return cleanedValue;
}
// 如果输入包含小数点,保留几位小数
if (cleanedValue.includes(".")) {
const parts = cleanedValue.split(".");
// 用户试图删除小数点后的值时,只返回整数部分和小数点
if (decimalPlaces === 0) {
// 如果 decimalPlaces 为 0,去掉小数点及其后面的值
return parts[0];
} else {
// 只保留指定位数的小数
const decimalPart = `.${parts[1].slice(0, decimalPlaces)}`;
return `${parts[0]}${decimalPart}`;
}
} else {
return cleanedValue;
}
}