最近要实现一个动态设置表单必填属性的需求。如图,

当审核结果是通过的时候,可以不填写审核意见进行提交。而如果审核结果是驳回的时候则必须填写审核意见才能提交。

第一个想法就是建两个一样的el-form-item,一个有rules,一个没有,然后通过v-if控制显隐。

      <el-form-item label="审核意见" v-if="testForm.checkResult!='1'">
        <el-input type="textarea" v-model="testForm.remark"></el-input>
      </el-form-item>
      <el-form-item label="审核意见" prop="remark" v-if="testForm.checkResult=='1'">
        <el-input type="textarea" v-model="testForm.remark"></el-input>
      </el-form-item>

感觉上是OK的,然后提交的时候却发现驳回的时候,在不填写审核意见的情况下仍然可以提交。

这个要讲清楚涉及到底层代码、DOM渲染等问题了,巴拉巴拉。。。(主要是不会,就不误导了)

那应该怎么解决呢?

在知道大概原因后可以将判断条件移动至el-form-item,然后通过行内的rules来控制渲染问题。

<el-form-item label="审核意见" prop="remark" :rules="testForm.checkResult=='1' ? rules.remark : [{ required:false}]">
        <el-input type="textarea" v-model="testForm.remark"></el-input>
</el-form-item>

然后经过多次实验点击均测试无问题。

待修炼修炼再来细谈这个问题吧。

 

参考资料  感谢感谢!

Logo

前往低代码交流专区

更多推荐