Element表单动态控制是否必填

43 篇文章 2 订阅
16 篇文章 2 订阅
本文介绍如何使用 Vue 的 el-form-item 和动态条件控制 rules,实现当发票类型为纸质专票时校验码输入可选,其他情况下必填。通过 :rules 标签根据 invoiceInfo.invoiceType 值调整验证规则。
摘要由CSDN通过智能技术生成

问题:有四种发票类型,当类型为纸质专票时,可以不输入校验码,其他三种情况都必须输入校验码。

 

解决方式:动态控制表单的rules

代码:

...

<!--            纸质专票无需输入校验码-->
<el-form-item
  label="校验码后六位"
  prop="checkCode"
  :rules="invoiceInfo.invoiceType == 2 ? [{required: false}]:rules.checkCode"
>
  <el-input
    v-model="invoiceInfo.checkCode"
    autocomplete="off"
    placeholder="请输入校验码后六位"
  >
  </el-input>
</el-form-item>


...

data() {
  return {
    rules: {
      checkCode: [
        {required: true, message: '请输入校验码后六位', trigger: 'blur'}
      ],
    }
  }
}


核心代码:

:rules="invoiceInfo.invoiceType == 2 ? [{required: false}]:rules.checkCode"


根据invoiceInfo.invoiceType的值,改变使用的rules;

页面效果:切换成纸质专票,小红点消失了。

 

对于 Element UI 表单验证中文件上传必填的问题,您可以使用 `el-upload` 组件结合表单验证规则来实现。 首先,您需要在表单中使用 `el-upload` 组件,并设置必填项的验证规则: ```vue <template> <el-form :model="formData" :rules="formRules"> <el-form-item label="文件上传" prop="file" required> <el-upload v-model="formData.file" :action="uploadUrl" :file-list="fileList" list-type="text"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { formData: { file: null, }, fileList: [], formRules: { file: [ { required: true, message: '请上传文件', trigger: 'change' }, ], }, }; }, methods: { submitForm() { this.$refs.form.validate((valid) => { if (valid) { // 表单验证通过,执行提交操作 console.log('提交表单'); } else { console.log('表单验证未通过'); return false; } }); }, }, }; </script> ``` 在上述代码中,我们使用了 `required` 属性来标记文件上传为必填项,并且在 `formRules` 中设置了相应的验证规则。当用户点击提交按钮时,会触发 `submitForm` 方法,在该方法中调用 `this.$refs.form.validate` 来进行表单验证。如果验证通过,则可执行提交操作;如果验证未通过,则提示用户。 请注意,上述代码只是一个示例,您需要根据自己的项目情况进行相应的调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值