对于动态增减表单的校验处理

74 篇文章 3 订阅

校验的三个基本设置依旧是 model / rules / prop,往常普通用的校验需要单独绑定元素,但对于遍历出来的新增数据一般不清楚有多少个,所以需要拿到当前遍历出来的索引值.

model:

  • 依旧是对象,只不过在遍历情况下数据可能绑定到数组,所以可以用一个花括号包裹,形成对象即可.
<el-form class="member-info" :model="{ users }" ref="userForm">
</el-form>

rules:

  • 对于element, 除了在 form 绑定一个全局的rules 对象以外, 如果表单项不确定, 是遍历生成的话, 生成多少表单项就应该有多少个规则, element允许直接在生成表单项的模板中直接针对当前 form-item 编写规则数组
 :rules="[{ required: true, message: '请输入数据', trigger: 'blur' }]"

重点在prop的绑定:

指定在 model 里面寻找数据的路径,但是整个属性需要是字符串, 其中中间的 index 可变, 所以应该是利用拼接字符串的方法来实现users[${index}].username

:prop="`users[${index}].username`"
<el-form class="member-info" :model="{ users }" ref="userForm">
      <div class="member-info-item" v-for="(item, index) in users" :key="index">
        <el-form-item
          label="姓名"
          :rules="[{ required: true, message: '请输入数据', trigger: 'blur' }]"
          :prop="`users[${index}].username`"
        >
          <el-input
            placeholder="请输入姓名"
            class="input-with-select"
            v-model="item.username"
          >
          </el-input>
        </el-form-item>
      </div>
    </el-form>

总结:

对于动态增减表单项的校验方式
依然是三个重要部分
modelusers 用花括号包裹, 硬造一个对象
prop 字符串拼接, 把每个遍历到的表单 index 放入 字符串中
rules 没办法 form 上面全局设置所有字段的对象, 就变成了表单项单独自己设置规则数组

效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值