[element-ui]el-form自定义校验-图片上传验证(手动触发部分验证方法)

背景:

在做导入文件功能的时候,需要校验表单,如图所示

店铺字段绑定在表单数据对象上,在点击确定的时候正常按照表单验证规则去校验,就不再赘述。

文件上传是个异步过程,属性值改变后不会去触发验证规则,这里需要手动去触发验证。有两种方法,记录一下。

方法1:

(方法1写法比较笨,是因为我之前做表单部分验证没生效才这么写的,可以直接看方法2-表单部分验证写法)

注意:fileList是单独定义的数组,不是绑定在表单对象中。

定义一个字符串errorMsg,红色样式,模拟表单验证的结果。

<el-form-item label="上传文件">
    <div class="upload-box">
        <el-upload action="" :auto-upload="false"
            :file-list="fileList"
            :on-remove="handleRemove"
            :before-upload="beforeUpload"
            :on-change="handleUploadChange"
            accept=".csv,.xlsx">
            <el-button slot="trigger" type="primary">点击选择</el-button>
            <el-button @click="handleDownLoad" type="text" class="ml15">下载模板</el-button>
            <div slot="tip" class="upload f12 color999">
                <p>1. 支持.csv, *.xlsx 格式的文件</p>
                <p>2. 单个文件大小不超过10M</p>
                <p>3. 指标字段名称需和模板中字段名称保持一致,否则校验失败且无法导入</p>
            </div>
        </el-upload>
        <p v-if="errorMsg" class="errorMsg f12" :class="canUpload? 'warn':'danger'">{{ errorMsg }}</p>
    </div>
</el-form-item>

在文件移除时,将errorMsg置空;在上传时,如果接口有返回报错信息,则赋值,代表上传的文件有问题,样式如下(不同颜色是因为产品要求红色不可点击确定,黄色可以确定保存) 

点击确认时,先判断一次有没有文件,没有则提示,这样就能保证表单验证和文件上传模拟验证同步校验。

handleSave() {
    if(!this.fileList.length) {
        this.errorMsg = '请上传文件'
    }
    this.$refs.ruleForm.validate((valid) => {
        if (!valid) return
        if(!this.fileList.length) return
        ......
    })
}

方法2:

fileList绑定在表单数据对象中,配置表单项的校验

<el-form-item label="上传文件" prop="fileList">
    <el-upload 
        :file-list="params.fileList"
        ...
    </el-upload>
</el-form-item>
rules: {
    fileList: [{ required: true, message: '请上传文件', trigger: 'change' }],
}

在移除和上传后都要校验此项

this.$refs.ruleForm.validateField('fileList')

方法2参考elementui from 表单验证 文件验证_validate-event-CSDN博客

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element-ui 提供了很多表单校验的组件和方法,可以帮助开发者实现前端表单的校验功能。 首先,element-ui 提供了一些内置的校验规则,比如必填项、最大长度、最小长度、数字等。你可以在表单组件中使用这些规则来进行校验。例如,在 el-form-item 中使用 prop 属性指定要校验的字段,在 el-input 中使用 rules 属性来设置校验规则,如下所示: ```html <template> <el-form @submit="handleSubmit"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username" placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" placeholder="请输入密码" type="password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" native-type="submit">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { username: '', password: '' } } }, methods: { handleSubmit() { this.$refs.form.validate(valid => { if (valid) { // 表单校验通过,可以进行提交操作 // ... } else { // 表单校验不通过 return false; } }); } } } </script> ``` 上述代码中,通过设置 el-form-item 的 prop 属性来指定要校验的字段,在 el-input 中使用 rules 属性设置校验规则。在 handleSubmit 方法中,使用 this.$refs.form.validate 方法触发表单校验,该方法接收一个回调函数,当表单校验通过时,回调函数中的 valid 参数为 true,否则为 false。 除了内置的校验规则,element-ui 还允许开发者自定义校验规则。你可以通过自定义校验函数来实现更复杂的校验逻辑。具体的自定义校验规则可以参考 element-ui 的官方文档。 希望以上内容能帮助到你,如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值