el-form中el-upload,应用自定义rules验证必须上传文件

本文介绍了一个基于Element UI的文件上传组件实现,包括表单代码、自定义验证规则及全局文件列表控制等内容。通过具体示例展示了如何进行文件类型限制、预览、移除等操作,并实现了对文件列表的实时验证。

1.表单代码

<el-form :model="addForm" size="mini" :rules="rules" ref="addForm">
     <el-row>
         <el-col :span="24">
             <el-form-item label="附件" prop="fileList">
                 <el-upload ref="fileupload" :data="addForm" accept=".doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.jpg,.png"
                      action="" :on-preview="handlePreview" :on-remove="handleRemove"
                      :before-upload="beforeUpload" :on-success="successtp" :on-error="errortp" :auto-upload="false"
                      :file-list="fileList" :on-change="fileChange">
         <el-button slot="trigger" size="mini" type="primary">选取文件</el-button>
                 </el-upload>
              </el-form-item>
        </el-col>
   </el-row>
</el-form>

2.rules验证,针对上方表单中的prop="fileList" 这个名字是自定义的,上下文对应即可

rules: {
        fileList: [{ required: true, validator: validateFileUrl, trigger: 'change' }]
       },

3.自定义验证方法,写在data()中

data() {
            //定义校验规则
            let validateFileUrl = (rule, value, callback) => {
                if (this.fileList.length < 1) {//我控制了FileList 长度代表文件个数
                    callback(new Error("请上传文件"))
                } else {
                    callback()
                }
            }

4. 对于this.fileList(全局变量)的控制,此处的名称是实质的针对文件的变量,与上方校验的名称无关

            //	文件列表移除文件时的钩子
            handleRemove(file, fileList) {
                this.fileList = [];
            },
            //上传文件时以及更改时进入
            fileChange(file, fileList) {
               this.fileList = fileList;
            },

5.由于自定义的触发,比较费劲。。。,所以选择watch辅助一下,加了watch之后,当fileList变量变动之后,就会复发自定义的校验,展示校验信息。

watch: {
            fileList(nowval, oldval) {
                this.$refs['addForm'].validateField('fileList');
            }
        },

至此,上传文件校验全程配置结束。

由于表单验证我的需求就是表单开,验证需要在,所以我没有清理验证。

如需清理,可以使用此行代码

this.$refs['addForm'].clearValidate();

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值