表单校验如果直接使用v-model.number
会无法输入小数点
<el-form-item label="价格" prop="price">
<el-input
oninput="value=value.replace(/[^\d|.]/g,'')"
@blur="form.price = $event.target.value"
v-model="form.price"
placeholder="请输入价格"
/>
</el-form-item>
// 校验规则
let validatorPrice = (rule, value, callback) => {
if (!value) return callback(new Error('请输入金额'))
if (!Number(value)) return callback(new Error('请输入数字值'))
// let reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{0,2})$/g; //小数限制0-2位
let reg = /((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/;
if (!reg.test(value)) return callback(new Error('请输入正确价格'));
callback();
}
...
rules: {
price: [{required: true, validator: validatorPrice, trigger: "blur"}],
...
},