首页 > 技术文章 > element ui使用v-for循环form表单校验的实现

aidixie 2020-11-12 17:43 原文

<template>
  <el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="120px" class="demo-dynamic">
    <el-row v-for="(domain, index) in dynamicValidateForm.persons" :key="domain.key">
      <el-col :span="8">
        <el-form-item :label="'姓名' + index+1" :prop="'persons.' + index + '.name'" :rules="rules.name">
          <el-input v-model="domain.name"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="8">
        <el-form-item :label="'手机号码' + index+1" :prop="'persons.' + index + '.iphone'" :rules="rules.iphone">
          <el-input v-model="domain.iphone"></el-input>
        </el-form-item>
      </el-col>
      <el-col :span="8">
        <el-form-item :label="'身份证号码' + index+1" :prop="'persons.' + index + '.idCard'" :rules="rules.idCard">
          <el-input v-model="domain.idCard"></el-input>
        </el-form-item>
      </el-col>
    </el-row>
    <el-form-item>
      <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
      <el-button @click="addPerson">新增人员</el-button>
      <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
    </el-form-item>
  </el-form>
</template>
<script>
export default {
  data() {
    return {
      dynamicValidateForm: {
        persons: [
          {
            name: '',
            iphone: '',
            idCard: ''
          },
          {
            name: '',
            iphone: '',
            idCard: ''
          },
          {
            name: '',
            iphone: '',
            idCard: ''
          }
        ],
        email: ''
      },
      rules: {
        name: [
          {
            required: true, message: '请输入姓名', trigger: 'blur'
          }
        ],
        iphone: [
          {
            required: true, message: '请输入手机号码', trigger: 'blur'
          },
          {
            pattern: /^[1][3,4,5,6,7,8,9][0-9]{9}$/, message: '请输入正确格式的手机号码', trigger: 'blur'
          }
        ],
        idCard: [
          {
            required: true, message: '请输入身份证号码', trigger: 'blur'
          },
          {
            pattern: /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/, message: '请输入正确格式的身份证号码', trigger: 'blur'
          }
        ]
      }
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert('submit!');
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    addPerson() {
      this.dynamicValidateForm.persons.push({
        name: '',
        iphone: '',
        idCard: ''
      });
    }
  }
}
</script>

推荐阅读