使用elementUI表单校验函数validate需要注意的坑

elementUI表单校验需要使用到自定义校验规则,官网提供的API函数validate入参就一个回调函数,函数参数是返回校验结果(true/false)和校验字段名称prop,详见elementUI官网。

现在要讲的是自定义校验规则函数,即规则对象中的属性validator。

自定义函数的入参有三个,分别是rule,value和callback;其中rule是返回定义的规则对象,value是当前校验控件的状态值,callback是一个校验结果的回调方法。
直接上图:
在这里插入图片描述
图中指出存在的坑,为什么写if(!value)return;这段代码呢,那是因为,当控件如果没有输入任何字符而触发事件时的处理,开始以为直接return就可以了,结果引起校验的其他意想不到的异常!!!! 后面查了相关资料才知道,这个自定义校验函数必须返回一个回调函数“callback”!! 即图中下边的 callback();

返回callback的入参为空代表校验通过规则,返回含new Error(‘自定义提示’)入参代表校验不通过规则。
好了,问题解决了,如有什么不了解的,欢迎留言一起探讨!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ElementUI 表单校验提供了多种校验方式,包括必填、长度、数字、邮箱、电话、URL、自定义等等。 以下是一个示例代码: ```html <template> <el-form :model="form" ref="form" :rules="rules" label-width="80px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password"></el-input> </el-form-item> <el-form-item label="确认密码" prop="confirm"> <el-input type="password" v-model="form.confirm"></el-input> </el-form-item> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> <el-form-item label="手机号" prop="phone"> <el-input v-model="form.phone"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { username: '', password: '', confirm: '', email: '', phone: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 16, message: '长度在 6 到 16 个字符', trigger: 'blur' } ], confirm: [ { required: true, message: '请确认密码', trigger: 'blur' }, { validator: (rule, value, callback) => { if (value !== this.form.password) { callback(new Error('两次输入密码不一致')); } else { callback(); } }, trigger: 'blur' } ], email: [ { required: true, message: '请输入邮箱', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱格式', trigger: ['blur', 'change'] } ], phone: [ { required: true, message: '请输入手机号码', trigger: 'blur' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码', trigger: ['blur', 'change'] } ] } } }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { console.log('submit'); } else { console.log('error submit'); return false; } }); } } } </script> ``` 在上面的代码中,`rules` 对象定义了每个表单需要校验的规则。例如,`username` 规则中包括必填和长度限制,`confirm` 规则中包括必填和两次输入密码是否一致的自定义校验函数。 在 `submitForm` 方法中,调用了 `validate` 方法进行表单校验。如果校验通过,将会执行提交操作。如果校验不通过,将会提示错误信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

**之火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值