el-form 清除部分必填项校验 clearValidate

 场景:

  • 切换“供应商类型”时,需要清空“品牌”(必填)的值,并进行重新选择。如果供应商类型选择“业务”时,展示“渠道”字段(必填),选择其他值时,需要js清空“渠道”字段的值。

问题:

  1. 清空“品牌”时,会自动触发校验,清空后页面此字段会标红并展示校验结果及提示语。
  2. 隐藏并清空后,再次选择“业务”显示出来时,会显示校验结果。

期望:

  • 切换“供应商类型”时,通过 v-if 隐藏/展示的字段(如:”渠道“),及一直展示的字段(如:“品牌”)都清空,并页面不反馈/展示校验(失败)的结果

解决办法:

html:


  
    
  



  
    
  


js:

  change_providerType() {

    this.form.channel = '';

    if (this.form.brand) this.form.brand = '';
    /*
        clearValidate:一定要放在$nextTick中,不然不生效;
       • 清空全部字段校验结果:this.$refs["form"].clearValidate();
       • 清空部分字段校验结果:this.$refs["form"].clearValidate(['brand','channel']);

       * 注意:clearValidate 一定要放在$nextTick中,不然不生效。
    */

    // this.$refs["form"].clearValidate(['brand', 'channel']); // 不生效 - 还是会在上面js清空值的时候触发校验结果。

    this.$nextTick(() => { //生效
      this.$refs["form"].clearValidate(['brand', 'channel']);
    })
  }

你可能感兴趣的:(vue.js,elementui,javascript)