Element ui表单循环验证

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.1/index.min.js"></script>
    <link
      href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.1/theme-chalk/index.css"
      rel="stylesheet"
    />
    <style>
        .el-button,.el-date-editor.el-input, .el-date-editor.el-input__inner{width: 100%;}
    </style>
  </head>
  <body>
    <div id="app">
        <!-- 循环 -->
        <!-- 绑定属性 -->
        <el-form :model="item" :rules="rules" label-width="100px" ref="formRef" v-for="(item, index) in form.workExperience" :key="index">
            <template >
                <h4>工作经历-序号</h4>
                <!-- 做验证 -->
                <!-- 1.得到规则:rules[unit] -->
                <!-- 2.得到数据:form.workExperience[0][unit] -->
                <el-form-item label="工作单位" prop="unit">
                    <el-input placeholder="请填写工作单位" v-model="item.unit"></el-input>
                </el-form-item>
                <el-form-item label="开始时间" prop="undergoStartTime">
                    <el-date-picker type="date" v-model="item.undergoStartTime" placeholder="请选择开始时间"></el-date-picker>
                </el-form-item>
                <el-form-item label="结束时间" prop="undergoStartTime">
                    <el-date-picker type="date" v-model="item.undergoEndTime" placeholder="请选择结束时间"></el-date-picker>
                </el-form-item>
                <el-form-item label="担任职务" prop="job">
                    <el-input placeholder="请选择结束时间" v-model="item.job"></el-input>
                </el-form-item>
                <el-form-item label="离职原因" prop="cause">
                    <el-input placeholder="请填写离职原因" v-model="item.cause"></el-input>
                </el-form-item>
            </template>
        </el-form>
        <el-row>
            <el-button @click="add">添加工作经历</el-button>
        </el-row>
        <el-row style="margin-top: 10px;">
            <el-button type="primary" @click="submit">提交</el-button>
        </el-row>

    </div>
</body>
<script>
var vm = new Vue({
    el: "#app",
    data() {
    return {
        form: {
			workExperience: [{
                unit: '',
                isWoke:false,
                undergoStartTime: '',
                undergoEndTime:'',
                job: '',
                cause: '',
			}]
        },
        rules: {
            unit: [{
                required: true,
                message: '请输入工作单位',
                trigger: 'blur',
            }],
            undergoStartTime: [{
                required: true,
                message: '请选择起止时间',
                trigger: 'blur',
            }],
            undergoStartTime: [{
                required: true,
                message: '请选择结束时间',
                trigger: 'blur',
            }],
            job: [{
                required: true,
                message: '请输入担任职务',
                trigger: 'blur',
            }],
            cause: [{
                required: true,
                message: '请选输入离职原因',
                trigger: 'blur',
            }]
        },
    }
    },
    methods: {
        add(){
            this.form.workExperience.push({
                unit: '',
                isWoke:false,
                undergoStartTime: '',
                undergoEndTime:'',
                job: '',
                cause: '',
			})
        },
        async submit(){
            // 验证表单
            /*
            let isAllOk = true
            this.$refs.formRef.forEach(t=>{
                t.validate(isOk=>{
                    if(!isOk){
                        isAllOk = false
                        
                    }
                })
            })

            */
            // 用promise简化操作
            /*
            let isAllOk = true
            let list = []
            this.$refs.formRef.forEach(t=>{
                list.push(t.validate())
            })
            try{
                await Promise.all(list)
            }catch(error){
                isAllOk = false
            }
            if(isAllOk){
                console.log('验证通过')
            }else{
                console.log('验证失败')
            }
            */

            //用map简化操作
            try{
                await Promise.all(this.$refs.formRef.map(t=>t.validate()))
                console.log('验证通过')
            }catch(error){
                console.log('验证失败')
            }

   
        }
    }
})    
</script>
</html>

 

 


版权声明:本文为weixin_48010432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。