动态添加form表单并进行验证

该代码段展示了一个使用Vue.js的el-form组件创建的表单,用于收集姓名、单位、电话和身份证信息。每个字段都有相应的验证规则,如电话号码需符合特定格式,身份证也需通过正则表达式验证。表单支持动态添加和删除输入项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

<el-form inline label-position="top" ref="member" :model="formData">
          <div v-for="(item, index) in formData.members" :key="index" style="display: flex">
            <el-form-item label="姓名" :prop="'members.' + index + '.name'" :rules="[
              { required: true, message: '请输入姓名', trigger: 'blur' },
            ]">
              <el-input placeholder="请输入真实姓名" v-model="item.name">
              </el-input>
            </el-form-item>
            <el-form-item label="单位" :prop="'members.' + index + '.company'" :rules="[
              { required: true, message: '请输入单位', trigger: 'blur' },
            ]">
              <el-input placeholder="请输入您的工作单位" v-model="item.company">
              </el-input>
            </el-form-item>
            <el-form-item label="电话" :prop="'members.' + index + '.Iphone'" :rules="[
              { required: true, validator: validateIphone, trigger: 'blur' },
            ]">
              <el-input placeholder="请输入联系电话" v-model="item.Iphone">
              </el-input>
            </el-form-item>
            <el-form-item label="身份证" :prop="'members.' + index + '.idCard'" :rules="[
              { required: true, validator: validateidCard, trigger: 'blur' },
            ]">
              <el-input placeholder="请输入身份证" v-model="item.idCard">
              </el-input>
            </el-form-item>
            <div v-if="formData.members.length > 1" @click="remove(index)" class="icon">
              <img src="../../assets/image/icon_delete@2x.png" />
            </div>
          </div>
 </el-form>

<script>
  data(){
   return{
       formData{
          members: [{ name: "", company: "", Iphone: "", idCard: "" }],
     }
      
  }
}
methods:{
validateIphone(rule, value, callback) {
      if (value === "") {
        callback(new Error("请输入电话"));
      } else {
        const reg = /^(?:(?:\+|00)86)?1\d{10}$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(new Error("请输入正确格式"));
        }
      }
    },
    validateidCard(rule, value, callback) {
      if (value === "") {
        callback(new Error("请输入身份证号"));
      } else {
        const reg =
          /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/;
        if (reg.test(value)) {
          callback();
        } else {
          callback(new Error("请输入正确格式"));
        }
      }
    },
   add() {
      this.formData.members.push({
        name: "",
        company: "",
        Iphone: "",
        idCard: "",
      });
    },
    remove(index) {
      if (this.formData.members.length > 1) {
        this.formData.members.splice(index, 1);
      } else {
        this.formData.members[0] = {
          name: "",
          company: "",
          Iphone: "",
          idCard: "",
          removable: false,
        };
      }
    },

}
</script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值