vue rule 动态校验规则

 

需求分析

单选切换的时候,下面的表单是法人代表跟经办人姓名的校验是动态变化的。

解决方案

静态界面代码

<el-form
        ref="legalUserForm"
        :rules="legalUserRules"
        :inline="true"
        :model="legalUserInfo"
        label-width="200px"
      >
        <el-form-item label="申请人身份:" key="radio" prop="radio">
          <div class="radioGroup">
            <el-radio v-model.trim="custContactInfo.radio" label="1"
              >产权人</el-radio
            >
            <el-radio v-model.trim="custContactInfo.radio" label="2"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue3 中,可以使用 `v-model` 和 `watch` 以及 `computed` 来实现动态表单校验规则。以下是一个简单的例子: 1. 在组件中定义一个对象,用于存储表单数据和校验规则: ``` <template> <form> <input v-model="formData.name"> <span v-if="errors.name">{{ errors.name }}</span> </form> </template> <script> import { defineComponent, reactive, watch } from 'vue'; export default defineComponent({ setup() { const formData = reactive({ name: '', }); const rules = reactive({ name: [ { required: true, message: '请输入姓名', trigger: 'blur', }, { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur', }, ], }); const errors = reactive({}); watch(formData, () => { const validator = new Promise((resolve, reject) => { const errors = {}; for (const key in rules) { const rule = rules[key]; const value = formData[key]; for (const r of rule) { if (r.required && !value) { errors[key] = r.message; reject(errors); return; } if (r.min && value.length < r.min) { errors[key] = r.message; reject(errors); return; } if (r.max && value.length > r.max) { errors[key] = r.message; reject(errors); return; } } } resolve(); }); validator .then(() => { errors.name = ''; }) .catch((errors) => { errors.name = errors.name; }); }); return { formData, errors, }; }, }); </script> ``` 2. 在模板中使用 `v-model` 绑定表单数据,使用 `v-if` 显示错误信息。 3. 在 `watch` 中监听表单数据的变化,并根据校验规则进行校验,将错误信息存储到 `errors` 对象中。 4. 使用 `reactive` 创建响应式对象,以便在模板中动态显示错误信息。 这是一个基本的例子,你可以根据需要对其进行扩展和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunyin.liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值