vue+elementUI动态增加表单项并添加验证

参考elementUI官网以及网上的其他一些资料。话不多说,直接贴代码。
htmt部分:

<div id="app" style="width: 500px;">
        <el-form :model="environmentForm" ref="environmentForm">
            <el-row :gutter="24" v-for="(item, index) in environmentForm.items" :key="item.key">
                <el-col :span="6">
                    <el-form-item :prop="'items.' + index + '.name'"
                        :rules="{required: true, message: '名称不能为空', trigger: 'blur'}">
                        <el-input v-model="item.name"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="6">
                    <el-form-item :prop="'items.' + index + '.variable'"
                        :rules="{required: true, message: '变量值不能为空', trigger: 'blur'}">
                        <el-input v-model="item.variable"></el-input>
                    </el-form-item>
                </el-col>
                <el-col :span="3" v-if="environmentForm.items.length !== 1">
                    <el-button @click="removeEnvironmentForm(item)" class="el-icon-delete" size="mini" circle>
                    </el-button>
                </el-col>
                <el-col :span="3">
                    <el-button @click="addEnvironmentForm" size="mini" class="el-icon-plus" circle></el-button>
                </el-col>
            </el-row>

            <el-form-item>
                <el-button type="primary" @click="submitForm('environmentForm')">提交</el-button>
                <el-button @click="resetForm('environmentForm')">重置</el-button>
            </el-form-item>
        </el-form>

    </div>
<script>
    var vm;
    $(function () {
        vm = new Vue({
            el: '#app',
            data: {
                environmentForm: {
                    items: [{
                        name: '',
                        variable: '',
                    }]
                }
            },
            mounted: function () {},
            methods: {
                resetForm(formName) {
                    this.$refs[formName].resetFields();
                },
                removeEnvironmentForm(item) {
                    var index = this.environmentForm.items.indexOf(item)
                    if (index !== -1{
                        this.environmentForm.items.splice(index, 1)
                    }
                },
                addEnvironmentForm() {
                    this.environmentForm.items.push({
                        name: '',
                        variable: '',
                        description: '',
                        key: Date.now()
                    });
                },
            }
        })
    })
</script>

实现效果:单个时

 

 多个时显示删除按钮

posted @ 2020-12-17 10:47  不吃肉的羊  阅读(1292)  评论(0编辑  收藏  举报