elementui表格动态新增行验证无效?

发布于 2022-09-11 20:49:16 字数 2356 浏览 26 评论 0

elementui框架的table组件,动态新增行,行里面的列直接使用输入框,但是需要对输入框验证,按照官方的文章尝试了一下,怎么无法触发验证。

问题出在哪儿呢?

单独写了一个干净的页面,去掉了业务代码:

<template>
    <div>
        <el-button type="text" @click="handleAdd">添加人员</el-button>
        <el-form
            :rules="rules"
            ref="dataForm"
            :model="temp"
            label-position="right"
            label-width="150px"
        >
            <el-table :data="temp.pers" border style="width: 100%">
                <el-table-column label="名称">
                    <template scope="scope">
                        <el-input :placeholder="'pers.' + scope.$index + '.name'" v-model="scope.row.name" clearable 
                            :key="'pers.' + scope.$index + '.name'"
                            :prop="'pers.' + scope.$index + '.name'"
                            :rules="{
                                required: true, message: '名称不能为空', trigger: 'blur'
                            }"
                        >
                        </el-input>
                    </template>
                </el-table-column>
                <el-table-column prop="age" label="年龄">
                    <template scope="scope">
                        <el-input placeholder="请输入年龄" v-model="scope.row.age" clearable
                            :rules="{ required: true, message: '年龄不能为空', trigger: 'blur' }"
                        ></el-input>
                    </template>
                </el-table-column>
            </el-table>
            <el-button type="primary" @click="hadnleCreate">确认</el-button>
        </el-form>
    </div>
</template>
<script>
export default {
    name: 'test',
    data() {
        return {
            rules: {},
            temp: {
                pers: []
            }
        }
    },
    methods: {
        handleAdd() {
            this.temp.pers.push({
                name: '',
                age: 18
            })
        },
        hadnleCreate() {
            let self = this;
            this.$refs['dataForm'].validate((valid) => {
                debugger
                //valid==true,怎么验证都是通过
            })
        }
    }
}
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枯寂 2022-09-18 20:49:16

首先使用方式就有问题, element-ui 验证逻辑是在 el-form-item 组件中做的, 把代码修改成如下即可:

    <el-table-column label="名称">
        <template scope="scope">
            <el-form-item 
                :rules="{
                    required: true, message: '名称不能为空', trigger: 'blur'
                }" 
                :prop="'pers.' + scope.$index + '.name'"
            >
                <el-input 
                    :placeholder="'pers.' + scope.$index + '.name'" 
                    v-model="scope.row.name" clearable>
                </el-input>
            </el-form-item>
        </template>
    </el-table-column>

这里只改了一项,其它照样修改就行. 修改后效果如下:

图片描述

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文