el-form的整体校验---动态调用校验规则

el-form的整体校验—动态调用校验规则

一、重点: 计算属性computed

二、分析:

1、页面相关代码块 (重点 :rules=“rulesList”)
 <el-form :model="ruleForm" ref="ruleForm" :rules="rulesList" label-width="140px" class="demo-ruleForm">
     <el-form-item label="身份证正反面" prop="idCardPhotos" ref="shencard1">
                        <el-upload
                            class="upload-demo"
                            action="https://jsonplaceholder.typicode.com/posts/"
                            :on-success="handleAvatarSuccess1"
                            :on-preview="handlePreview"
                            :on-remove="handleRemove"
                            :before-remove="beforeRemove"
                            multiple
                            :limit="2"
                            name='url'
                            :on-exceed="handleExceed"
                            :file-list="fileList"
                            list-type="picture"
                            
                        >
                            <el-button size="small" type="primary">点击上传</el-button>
                        </el-upload>
                    </el-form-item>
                    <el-form-item label="营业执照图" prop="businessLicensePhotos" ref="zhizhao1"> 
                        <el-upload
                            class="upload-demo"
                            action="https://jsonplaceholder.typicode.com/posts/"
                            :on-success="handleAvatarSuccess2"
                            :on-preview="handlePreview"
                            :on-remove="handleRemove"
                            :before-remove="beforeRemove"
                            multiple
                            :limit="2"
                            name='url'
                            :on-exceed="handleExceed"
                            :file-list="fileList"
                            list-type="picture"
                        >
                            <el-button size="small" type="primary">点击上传</el-button>
                        </el-upload>
                    </el-form-item>
                    <el-form-item label="授权书" prop="authorization"> 
                        <el-upload
                            class="upload-demo"
                            action="https://jsonplaceholder.typicode.com/posts/"
                            :on-success="handleAvatarSuccess3"
                            :on-preview="handlePreview"
                            :on-remove="handleRemove"
                            :before-remove="beforeRemove"
                            multiple
                            :limit="2"
                            name='url'
                            :on-exceed="handleExceed"
                            :file-list="fileList"
                            list-type="text"
                            style="border:none"
                            
                        >
                            <el-button size="small" type="primary" style="display:inline-block">点击上传</el-button>&nbsp;&nbsp;&nbsp;
                             <div style="display:inline-block;color:#606266;font-size:12px">(经办人不是法人时需提供此项资料)</div>
                        </el-upload>
                    </el-form-item>
                    <el-form-item label="域名证书" prop="domainCertificate">
                        <el-upload
                            class="upload-demo"
                            action="https://jsonplaceholder.typicode.com/posts/"
                            :on-success="handleAvatarSuccess4"
                            :on-preview="handlePreview"
                            :on-remove="handleRemove"
                            :before-remove="beforeRemove"
                            multiple
                            :limit="2"
                            name='url'
                            :on-exceed="handleExceed"
                            :file-list="fileList"
                            list-type="text"
                            
                        >
                    <el-button size="small" type="primary">点击上传</el-button>
                        </el-upload> 
</el-form-item>
</el-form>
     
               
2、书写校验规则
	rules:{
                idCardPhotos: [{ required: true, message: "此项为必填项,请选择图片", trigger: "change" }],
                businessLicensePhotos: [{required: true, message: "此项为必填项,请选择图片", trigger: "change"}],
                
                // domainCertificate:[{ required: true, message: "此项为必填项,请选择文件", trigger: "change"}]
            },
     rules2:{
                idCardPhotos: [{ required: true, message: "此项为必填项,请选择图片", trigger: "change" }],
                businessLicensePhotos: [{required: true, message: "此项为必填项,请选择图片", trigger: "change"}],
                domainCertificate:[{ required: true, message: "此项为必填项,请选择文件", trigger: "change"}]
            }
3、计算属性computed,不同情况下,rules属性的值不同
computed:{
        rulesList:function() {
            if(parseInt(this.chanpinType2)== 1){
                return this.rules;
            }
            else if (parseInt(this.chanpinType2)== 2){
                return this.rules2;
            }
        }
       
    }

三、踩坑

问题:条件切换的时候,校验结果叠加
解决:有多个校验时,需要在合适的地方移除校验结果
//移除校验的方法封装	
getRefs(data) {
                data.map(item => {
                    this.$refs[item].clearValidate(); // 移除校验结果
                });
            }
                
//调用
 getRefs([shencard1,zhizhao1]);               
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用动态绑定的方式来实现el-form-item的校验规则。首先,您需要在data中定义一个rules数组,用于存储不同字段的校验规则。然后,在el-form-item中使用:rules属性来动态绑定对应字段的校验规则。 下面是一个示例: ```html <template> <el-form :model="form" ref="form"> <el-form-item label="用户名" prop="username" :rules="rules.username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password" :rules="rules.password"> <el-input type="password" v-model="form.password"></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: '' }, rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' }, { min: 5, max: 10, message: '长度在 5 到 10 个字符', trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' } ] } }; }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 表单校验通过,提交表单 // TODO: 提交逻辑 } else { // 表单校验不通过,显示错误提示 } }); } } }; </script> ``` 在上述示例中,我们使用了一个form对象来绑定输入框的,并在data中定义了一个rules对象来存储校验规则。在el-form-item中,使用:rules属性来动态绑定rules对象中对应字段的校验规则。最后,在submitForm方法中,通过this.$refs.form.validate()方法来触发表单校验。 希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值