Vue + ElementUI 动态设置表单必填属性

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

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

第一个想法就是建两个一样的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>

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

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

 

参考资料  感谢感谢!

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
elementui是一个基于Vue.js的组件库,提供了丰富的UI组件和常用的功能组件,其中单组件是非常实用的。而单的动态校验,也是单中常用的一个功能,elementui提供了灵活且方便的动态校验方式,其中require是一种动态的校验方式。 require校验方式用来判断单是否必填,即必须填写才能提交单。elementui中,可以通过给校验规则添加require属性来实现该功能,例如: ``` <el-form :model="formData" :rules="formRules"> <el-form-item label="姓名" prop="name"> <el-input v-model="formData.name"></el-input> </el-form-item> <el-form-item label="年龄" prop="age"> <el-input v-model.number="formData.age"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('form')">提交</el-button> </el-form-item> </el-form> ``` ``` export default { data() { return { formData: { name: '', age: null }, formRules: { name: [ { required: true, message: '请输入姓名', trigger: 'blur' } ], age: [ { required: true, message: '请输入年龄', trigger: 'blur' } ] } } }, methods: { submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('submit success'); } else { alert('validate fail'); return false; } }); } } } ``` 在上述代码中,单中的“姓名”和“年龄”均被设置为必填项,添加了required属性。在点击提交按钮时,调用了validate方法进行单校验,该方法会根据规则数组中的属性来进行校验,如果校验通过则弹出提交成功的提示,否则弹出校验失败的提示。 可以看出,elementui动态校验确实非常方便,提高了开发效率,同时也保证了单的数据可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值