参考了几种金额判断是方法整合了下方法:
<el-form :model="form" :rules="rules">
<el-form-item label="金额" required prop="money">
<el-input placeholder="请输入金额" v-model="form.money" />
</el-form-item>
</el-form>
date(){
const validatorMoney = (rule,value,callback)=>{
let isVal = value.toString() //先转换成字符串类型
let regnumDot = /[^\d.]/g
if(isVal === ''){
callback(new Error('请输入金额'))
} else if (isVal.indexOf('.') === 0) {
this.form.money = '0' + isVal
} else if (isVal.indexOf('.') < 0 && isVal != "") {
this.form.money = parseFloat(isVal)//如果没有小数点,首位不能为类似于 01、02的金额
} else if (regnumDot .test(isVal )) {
this.form.money = isVal.replace(/[^\d.]/g,""); //清除“数字”和“.”以外的字符
callback(new Error('只能输入“数字”和“.”的字符'))
} else if (isVal.split(".").length - 1 > 1) {
this.form.money = isVal.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的
} else if (isVal.indexOf('.') >= 1) {
this.form.money = isVal.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数
callback(new Error('只能输入两个小数'))
}
}
return {
form:{
money: 0
},
rules: {
money: [
{
validator: validatorMoney, trigger: 'change'
}
]
}
}
}