element表格嵌套表单进行验证

21 篇文章 0 订阅
20 篇文章 0 订阅

拿到需求是表格需要能动态增加,然后又根据归还方式不同,如果是邮寄方式,后面快递信息都是必填。如果不是邮寄方式,那后面数据就不用填。先把效果展示出来

需要进行每一项表单里面的数据进行验证!

查element找到了需要的代码。

我挑重要的说。因为是动态的,所以prop绑定的时候需要不能唯一,就是动态数据。官方写法

:prop="'domains.' + index + '.value'"

其实主要就是这个了。然后添加验证规则就行。我直接附上代码记录一下

HTML代码:

<el-table-column prop="returnType" label="归还方式" align='center' width="150">
                <template slot-scope="scope">
                    <el-form-item :prop="'FC_ReturnEquipmentList.'+scope.$index+'.returnType'" label-width="0px" :rules='formContentRules.returnType'>
                        <el-select size="mini" placeholder="归还方式" v-model="scope.row.returnType" >
                            <el-option v-for="item in returnTypeBox"
                                       :key="item.value"
                                       :label="item.label"
                                       :value="item.value">
                            </el-option>
                        </el-select>
                    </el-form-item>
                </template>
            </el-table-column>
            <el-table-column prop="expressage" label="快递公司" align='center' width="180">
                <template slot-scope="scope">
                    <el-form-item :prop="'FC_ReturnEquipmentList.'+scope.$index+'.expressage'" label-width="0px" :rules='formContentRules.expressage' v-if="scope.row.returnType=='postSend'">
                        <el-input v-model="scope.row.expressage" placeholder="快递公司" size="mini"></el-input>
                    </el-form-item>
                    <span v-else></span>
                </template>
            </el-table-column>
            <el-table-column prop="expressageNum" label="快递单号" align='center' width="180">
                <template slot-scope="scope">
                    <el-form-item :prop="'FC_ReturnEquipmentList.'+scope.$index+'.expressageNum'" label-width="0px" :rules='formContentRules.expressageNum' v-if="scope.row.returnType=='postSend'">
                        <el-input v-model="scope.row.expressageNum" placeholder="快递单号" size="mini" ></el-input>
                    </el-form-item>
                    <span v-else></span>

                </template>
            </el-table-column>

JS代码:

data(){
    return{
        returnTypeBox: [{ value: 'postSend', label: '邮寄方式' }, { value: 'theReturn',     label: '现场归还' }],
        //校验规则
        formContentRules: {
           expressageNum: [{ required: true, message: '请填写', trigger: 'blur' }],
           expressage: [{ required: true, message: '请填写', trigger: 'change' }],
        },
    }
}

这样就行了,没什么难度。

这里说一下验证的样式不消失的问题(算个踩坑?):

首先说明一下官方的重置方式:

说一下2种方式,大的表单全部重置:this.$refs[formName].resetFields();小的局部的表单样式进行重置:this.$refs.xxx.clearValidate()

说第二种情况,就是我之后不需要验证了,不需要再填写了,直接用span空标签展示的情况,这个时候可能出现上一次验证的表单样式不消失的问题。原因很简单,我们F12打开控制台就能看到这个样式是在哪个div上了,它在<el-form-item></el-form-item>这个标签上。所以之后再写span空标签的时候,千万不要套在<el-form-item></el-form-item>这个里面就可以!

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值