表单循环绑定及座机和手机号同时校验

<el-form ref="newForm" class="demo-newForm" :inline="true" :model="newForm" :rules="rules">

<el-form-item label="辖区" prop="areaId">
                  <el-select v-model="newForm.areaId" placeholder="请选择辖区" style="width: 100%">
                    <el-option v-for="item in areaList" :key="item.areaId" :label="item.areaName" :value="item.areaId" />
                  </el-select>
                </el-form-item>


<div v-for="(item, index) in newForm.emergencyResourceUserList" :key="index" class="user_form">
              <el-row>
                <el-col :span="7">
                  <div>
                    <el-form-item :label="index === 0 ? '联系人(主要)' : '联系人'" :prop="'emergencyResourceUserList.' + index + '.userName'">
                      <el-input v-model.trim="item.userName" clearable maxlength="20" placeholder="请输入联系人" />
                    </el-form-item>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex; justify-content: center">
                    <el-form-item label="职位" :prop="'emergencyResourceUserList.' + index + '.userPosition'">
                      <el-input v-model.trim="item.userPosition" clearable maxlength="50" placeholder="请输入职位" />
                    </el-form-item>
                  </div>
                </el-col>
                <el-col :span="7">
                  <div style="display: flex; justify-content: end">
                    <el-form-item
                      label="联系方式"
                      :prop="'emergencyResourceUserList.' + index + '.userPhone'"
                      :rules="{
                        required: false,
                        validator: formValidatePhone,
                        trigger: 'blur',
                      }"
                    >
                      <el-input v-model.trim="item.userPhone" clearable maxlength="12" placeholder="请输入联系方式" />
                    </el-form-item>
                  </div>
                </el-col>
                <el-col :span="3">
                  <div class="user_btn">
                    <el-form-item label="按钮" prop="projectName" style="color: #fff">
                      <el-button type="text" style="color: red" @click="handleDel(index)">删除</el-button>
                    </el-form-item>
                  </div>
                </el-col>
              </el-row>
            </div>
<div>
              <el-row>
                <el-col :span="21">
                  <div class="insert_user" @click="handleAddUser">+ 添加新的联系人</div>
                </el-col>
              </el-row>
            </div>




 newForm: {
          areaId: '',
          emergencyResourceId: '',
          emergencyResourceUserList: [
            {
              emergencyResourceId: '',
              emergencyResourceUserId: '',
              isMainContact: true,
              userName: '',
              userPhone: '',
              userPosition: '',
            },
          ],
          location: '',
          resourceIcon: '',
          resourceIntroduce: '',
          resourceName: '',
          resourceType: '',
        }, //表单对象

rules: {
          areaId: [
            {
              required: true,
              message: '请选择所属辖区',
            },
          ],}
</el-form>

座机手机号校验

<el-form-item
                      label="联系方式"
                      :prop="'emergencyResourceUserList.' + index + '.userPhone'"
                      :rules="{
                        required: false,
                        validator: formValidatePhone,
                        trigger: 'blur',
                      }"
                    >
                      <el-input v-model.trim="item.userPhone" clearable maxlength="12" placeholder="请输入联系方式" />
                    </el-form-item> 


data() {
      const validatePhone = (rule, value, callback) => {
        if (!value) {
          callback()
        } else {
          let regPone = null
          let mobile = /^1(3|4|5|6|7|8|9)\d{9}$/ //最新16手机正则
          let tel = /^(0\d{2,3}-){0,1}\d{7,8}$/ //座机
          if (value.charAt(0) == 0) {
            // charAt查找第一个字符方法,用来判断输入的是座机还是手机号
            regPone = tel
          } else {
            regPone = mobile
          }
          if (!regPone.test(value)) {
            callback(new Error('请输入正确的电话格式!'))
          }
          callback()
        }
      }
      return {
        formValidatePhone: validatePhone,
}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值