给el-form-item,添加key的场景

v-if控制dom显示隐藏,dom的校验提示语还会显示,导致校验异常

1.公用同一个表单;

2.选择不同的账号类型,下面对应的表单项不同,但存在公用同一个字段的情况;

3.在切换另一个账号类型,点击确认,校验内容具有文字提示;

4.在账号对应input中输入内容,仍提示请输入账号字样;没走到校验里面(拿不到输入的内容);

 

原因

v-if在操作dom的时候,在根节点进行的删减,而element在封装的时候没考虑这块,导致rules判断的时候,无法取到v-if添加进来的prop值;

解决方法

在 el-form-item 中添加一个属性key,key的值是唯一的(一般key和prop写一样的内容即可,因为rules里面的东西不能重复定义,所以肯定是唯一的。)

简单赘述

         <el-form-item
            prop="accountName"
            key="accountName"
            label="账号"
            :rules="[
              { required: true, message: '请输入账号', trigger: 'blur' },
              { trigger: 'blur', validator: validateAccount },
            ]"
          >
            <el-input
              v-model.trim="CurObject.accountName"
              placeholder="请输入账号"
              name="accountName"
              type="text"
              tabindex="1"
              autocomplete="on"
              clearable
            />
          </el-form-item>

另外需要注意的是,在切换账号类型的时候(建议使用watch事件);

1.先将表单对应的字段值,进行置空(存在字段公用的情况,避免值,缓存);

2.调用表单提供的 this.$forceUpdate();

3. this.resetForm('ruleForm'),清除上一次的校验;

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值