el-from表单自定义校验

<el-form ref="formRef" label-width="150px" :model="model" :rules="rules">
	<el-form-item
     v-for="(field, index) in formFields"
     :key="index"
     :label="field.subjectName"
     :prop="field.name"
	>
     <el-input v-model="model[field.name]" />
   </el-form-item>
 </el-form>

data种rules的值

model: {
	name: '',
},
rules:{
	name:[
		{
			required: true,
			message: '请输入姓名',
			trigger: 'blur',
		},
		{
			validator: (rule, value, callback) => {
				//在此处获取到输入值做处理
				if (!/^[0-9]\d*$/.test(value)) {
					callback(new Error('请输入正整数'))
				} else {
					callback()
				}
	        },
	        trigger: 'blur',
		}
	]
}

这样就完成了自定义校验规则,先会校验是否空值,再校验此处的自定义规则。

当表单校验规则中都存在相同的自定义规则时,可以在mounted生命周期中做处理为rules批量添加规则。

const createValidator = (regex, errorMessage) => ({
  validator: (rule, value, callback) => {
    if (!regex.test(value)) {
      callback(new Error(errorMessage));
    } else {
      callback();
    }
  },
  trigger: 'blur',
});

const commonValidator = createValidator(/^\d+(\.\d+)?$/, '请输入数字');
const positiveValidator = createValidator(/^[1-9]\d*$/, '请输入正整数');

for (let key in this.rules) {
  if (Array.isArray(this.rules[key])) {
    this.rules[key].push(commonValidator, positiveValidator);
  }
}

这样就为rules中所有的校验规则有添加了positiveValidatorcommonValidator两个规则。

最后触发表单校验:

btnClick(){
	this.$refs['formRef'].validate(async (valid) => {
		if(valid){
			//这里些校验通过后的业务操作
		}
	})
},
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值