_js compu">
当前位置:   article > 正文

computed实现简单的动态表单校验_js computed动态控制v-for input 的rules

js computed动态控制v-for input 的rules

有的业务会遇到表单的部分字段在特定的情况下发生校验,例如在下面的场景,当你选择了计量单位的时候,重量是必填的,但是不选择计量单位的时候,重量不是必填项,这个时候我们可以用computed来写校验规则:

  1. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="160px" class="demo-ruleForm" :validate-on-rule-change="false">
  2. <el-row>
  3. <el-col :span="12">
  4. <el-form-item label="计量单位:">
  5. <el-select size="small" v-model="ruleForm.unitId" placeholder="请选择计量单位">
  6. <el-option
  7. v-for="item in matUnits"
  8. :label="item.unitName"
  9. :key="item.unitId"
  10. :value="item.unitId">
  11. </el-option>
  12. </el-select>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="12">
  16. <el-form-item label="重量:" prop='meterWeight'>
  17. <el-input size="small" v-model.number="ruleForm.meterWeight" placeholder="请输入重量" @input="change($event)"></el-input>
  18. </el-form-item>
  19. </el-col>
  20. </el-row>
  21. </el-form>
  1. computed:{
  2. rules(){
  3. return {
  4. meterWeight: [
  5. {required: this.ruleForm.unitId ? true : false, message: '请填写重量!', trigger: 'blur' }
  6. ],
  7. }
  8. }
  9. },

 但是要注意,el-form有个validate-on-rule-change属性默认是true,每一次rules发生变化的时候都会触发一次验证,如果不是业务需要,可以将它设置为false,在提交的时候统一触发校验。

以上,以后遇到这样的业务,就可以使用computed实现简单的表单的动态校验了。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号