element表单校验--老先生

本文介绍了使用Element UI中表单校验的功能,包括整体校验方法validate、重置表单resetFields及清除校验结果clearValidate等常用操作。文中还提到了作者在实践中遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

element表单校验

tip1

this.$refs[formName].validate():

validate

对整个表单进行校验的方法,参数为一个回调函数。该回调函数会在校验结束后被调用,并传入两个参数:是否校验成功和未通过校验的字段。若不传入回调函数,则会返回一个 promise。这个是帮助实现表单校验的函数。

之前校验结果不清除的bug,加个clear函数,里面内容

this.$nextTick(() =>{
    this.$refs['form'].resetFields()
    this.$refs['form'].clearValidate()
    this.form.fieldLength = this.form.fieldDesc = ''
  })

resetFields

对整个表单进行重置,将所有字段值重置为初始值并移除校验结果

clearValidate

移除表单项的校验结果。传入待移除的表单项的 prop 属性或者 prop 组成的数组,如不传则移除整个表单的校验结果

今日完成

今天把所有的校验做完了,有部分校验是无法用注解就用了判断,这个影响不大。表单校验无法清除的bug也解决了,不过之前想要同时显示券码库的id和name这个想不出来怎么做,学姐提出用map,但因为用了map除了建立映射需要改的太多,在框里面的显示也会没法排版,所以这个还是不做了。之后再遇到什么好的解决思路再去做吧。

今天又找了四个地方有bug和不理解的逻辑,有的类库没见过,明天就整理一下这部分的逻辑,已得到导师同意。

如果您使用的是 element-plus 的表格和表单组件,并且需要进行校验,可以使用其提供的校验规则和自定义校验方法。 对于表格组件,您可以在列定义中添加 `rules` 属性来设置校验规则,例如: ```html <el-table :data="tableData"> <el-table-column prop="name" label="姓名" :rules="[{ required: true, message: '请输入姓名', trigger: 'blur' }]"></el-table-column> <el-table-column prop="age" label="年龄" :rules="[{ required: true, message: '请输入年龄', trigger: 'blur' }, { type: 'number', message: '年龄必须为数字值' }]"></el-table-column> </el-table> ``` 在上述示例中,我们为姓名和年龄两列设置了校验规则,其中 `required` 表示必填,`type` 表示输入类型。当表格中的数据被修改时,如果不符合校验规则,将会弹出相应的提示信息。 对于表单组件,您可以使用 `el-form` 组件中的 `rules` 属性来设置校验规则,例如: ```html <el-form :model="form" :rules="rules"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="form.age"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> ``` 在上述示例中,我们设置了一个 `form` 对象来存储表单数据,并为姓名和年龄两个字段设置了校验规则。当用户提交表单时,如果不符合校验规则,将会弹出相应的提示信息。 您还可以使用自定义校验方法来实现更复杂的校验逻辑,例如: ```html <el-form :model="form" :rules="rules"> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" type="password"></el-input> </el-form-item> <el-form-item label="确认密码" prop="password2"> <el-input v-model="form.password2" type="password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> ``` ```js data() { return { form: { password: '', password2: '' }, rules: { password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { validator: this.validatePassword, trigger: 'blur' } ], password2: [ { required: true, message: '请再次输入密码', trigger: 'blur' }, { validator: this.validatePassword2, trigger: 'blur' } ] } } }, methods: { validatePassword(rule, value, callback) { if (value.length < 6 || value.length > 16) { callback(new Error('密码长度应为6-16位')) } else { callback() } }, validatePassword2(rule, value, callback) { if (value !== this.form.password) { callback(new Error('两次输入的密码不一致')) } else { callback() } }, submitForm() { this.$refs.form.validate(valid => { if (valid) { // 校验通过,提交表单 } else { // 校验不通过,弹出提示信息 } }) } } ``` 在上述示例中,我们为密码和确认密码两个字段设置了自定义校验方法 `validatePassword` 和 `validatePassword2`,用于检查密码长度和两次输入的密码是否一致。在提交表单时,我们调用 `$refs.form.validate` 方法来进行校验,并根据校验结果来决定是否提交表单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值