clearValidate()和resetFields()表单校验的用法和区别
目标:实现表单重置和清除验证
1.整个表单的校验移除
<Form ref="form" rule={this.rules}> <FormItem prop="name" label="姓名"> <Input/> </FormItem> <FormItem prop="age" label="年龄"> <Input/> </FormItem> </Form> // 根据判断条件, 移除所有表单项的校验 if (/*条件*/) { this.$refs['form'].clearValidate(); } // 但是有时候只需要移除其中的某一项校验, 如只移除姓名的校验: if (/*条件*/) { this.$refs['form'].clearValidate(['name']); }
2.resetFields和clearValidate区别
this.$refs.form.resetFields(); //移除校验结果并重置字段值
this.$refs.form.clearValidate(); //移除校验结果
// 二者都能清除验证,但是resetFields()会重置字段值,而在vue中大量用到的数据的绑定,很可能出现
// 同一个数据绑定在多处的情况,如果滥用resetFields很可能造成界面上出现莫名的bug
3.注意
有可能this.r e f s [ f o r m ] . c l e a r V a l i d a t e ( ) 方 式 不 识 别 。 需 要 使 用 : t h i s . refs[form].clearValidate() 方式不识别。需要使用: this.$refs[form].clearValidate()方式不识别。需要使用:this.$refs.form.clearValidate();
4.element-ui中的表单校验
表单代码
<el-form :label-width="120" :rules="formRules" :model="form" ref="form">
<el-form-item label="活动名称" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
</el-form>
<el-button type="info" @click="save">保存</el-button>
<el-button type="info" @click="empty">重置</el-button>
方法
// 校验规则 formRules: { name: [ { required: true, message: '请输入活动名称', trigger: 'blur' }, { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' } ], } /** * 保存函数 */ save() { this.$refs[form].validate((valid) => { if (valid) { alert('submit!'); } else { console.log('error submit!!'); return false; } }); } //有可能this.$refs[form].validate() 方式不识别。需要使用: this.$refs.form.validate(); }) empty() { //重置 //根据需求二选一 /** * 移除校验结果并重置字段值 * 注:清除表单项name的校验及数值 */ this.$refs.form.resetFields(); /** * 移除校验结果 * 注:只清除表单项name的校验,不清楚表单项name的数值 */ this.$refs.form.clearValidate('name'); })
表单方法(Element官网说明):
本文来自博客园,作者:喆星高照,转载请注明原文链接:https://www.cnblogs.com/houxianzhou/p/17927783.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?