ant-design-vue的form校验中清除校验不通过的提示语

这里需要用到ant-design-vue之中的 clearValidate方法,该方法只清除校验结果提示语

 当然resetFields也是可以清除的,但是resetFields在清除提示语的同时也会把对应的字段值给重置了

 

//清除全部校验提示语
formRef.value.clearValidate()
//清除表单之中某一项校验提示语
foemRef.value.clearValidate("name")//name指代你给formItem绑定校验规则时候的name名字

应用:

<a-form
    :model="formState"
     ref="formRef"
    :rules="formRules" 
       >

     <a-form-item
           label="最小级别"
          :wrapper-col="{ span: 18 }"
           name="minLevel"
                >
            <a-input
               autocomplete="off"
               v-model:value="formState.minLevel"
               type="textarea"
                  />
      </a-form-item>

      
      <a-form-item
           label="最大级别"
          :wrapper-col="{ span: 18 }"
           name="maxLevel"
                >
            <a-input
               autocomplete="off"
               v-model:value="formState.maxLevel"
               type="textarea"
                  />
      </a-form-item>

</a-form>


<script setup>
import {ref,reactive} from 'vue'
const formRef = ref(null)
const formState = reactive({
       minLevel:"1",
       maxLevel:"10",
})

const formRules = {

    minLevel: [
    {
      validator: (rule,value) => {
      
        if(value == '') {
          return Promise.reject('请输入必选项')
        }else if(value > formState.maxLevel) {
          return Promise.reject("最小级别不能大于最大级别")
        }else if(value <= formState.maxLevel) {
    //在自定义校验规则里面应用clearValidate方法,达到条件清除最大级别的校验提示语
          geoFormRef.value.clearValidate("maxLevel")
          return Promise.resolve()
        }else {
          return Promise.resolve()
        }
      },
      trigger: "change",
    },
  ],
}

</script>

### 如何在 Vue3 中使用 ant-design-vue 进行表单校验 #### 安装依赖 为了在项目中使用 `ant-design-vue` 的组件库,首先需要安装其最新版本以及必要的工具包。以下是安装命令: ```bash npm install ant-design-vue@next ``` 此命令会自动下载适用于 Vue3 的 `ant-design-vue` 版本[^1]。 --- #### 创建表单并实现校验逻辑 下面是一个完整的示例代码,展示如何通过 `Form` 组件完成基本的表单校验功能: ```vue <template> <a-form :model="formState" @finish="onFinish"> <!-- 用户名输入框 --> <a-form-item name="username" :rules="[{ required: true, message: '请输入用户名!' }]"> <a-input v-model:value="formState.username" placeholder="用户名"></a-input> </a-form-item> <!-- 密码输入框 --> <a-form-item name="password" :rules="[ { required: true, message: '请输入密码!'}, { min: 6, max: 20, message: '密码长度应在6到20之间'} ]" > <a-input-password v-model:value="formState.password" placeholder="密码"></a-input-password> </a-form-item> <!-- 提交按钮 --> <a-button type="primary" html-type="submit">提交</a-button> </a-form> </template> <script> import { defineComponent, reactive } from "vue"; export default defineComponent({ setup() { const formState = reactive({ username: "", password: "" }); const onFinish = (values) => { console.log("成功", values); }; return { formState, onFinish }; } }); </script> ``` 上述代码展示了如何定义一个简单的登录表单,并为其设置校验规则。对于每个字段(如用户名和密码),可以通过 `name` 属性绑定对应的模型数据,并利用 `rules` 配置项指定具体的验证条件[^2]。 --- #### 解决 validate 执行的问题 如果遇到某些情况下 `validate` 方法未被触发的情况,通常是因为缺少回调函数或者配置错误所致。确保以下几点无误即可解决问题: - **每条规则都需提供明确的消息提示**:例如 `{ required: true, message: '必填'}`。 - **调用 `validateFields()` 或者监听 `@finish` 事件**来触发表单校验流程。 - 如果自定义校验器,则务必显式调用 `callback(null)` 来通知框架已完成当前阶段的处理操作。 --- #### 自定义校验规则 除了内置的基础校验外,还可以编写更复杂的业务逻辑作为补充。比如检查邮箱地址的有效性: ```javascript const customRules = [ { validator: async (_, value) => { if (!value || !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i.test(value)) { throw new Error('邮箱格式正确'); } }} ]; ``` 将其加入对应字段的 `rules` 数组之中即可生效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值