Element Plus 表单校验不触发是怎么回事?
我在用 Element Plus 写一个登录表单,明明给 form-item 加了 rules,也绑定了 model,但点击提交时校验完全没反应,错误提示也不显示。是不是漏了什么关键步骤?
我试过在 submit 方法里调用 this.$refs.form.validate(),但控制台报错说 validate 不是函数,ref 好像没拿到实例。
<el-form :model="loginForm" :rules="rules" ref="loginForm">
<el-form-item prop="username" label="用户名">
<el-input v-model="loginForm.username" />
</el-form-item>
<el-button type="primary" @click="submit">登录</el-button>
</el-form>
你现在的代码里给 form 绑定了 ref="loginForm",但在获取的时候用 this.$refs.form.validate() 就不对了,应该改成 this.$refs.loginForm.validate()。
另外补充一点,submit 方法最好这样写:
通用的做法是在 validate 的回调里处理验证结果。记得检查下 element-plus 版本,有时候低版本可能会有些小 bug。我之前也踩过这个坑,改完 ref 就好了。
再检查下 rules 配置是不是正确,规则写错了也可能导致不触发校验。这种问题太常见了,每次都要来回检查好几遍才找到原因。