Vue Element Plus 中 el-input-number 组件无法实时触发表单校验,只支持 blur 事件

2024-11-27 11:16:12

一. 问题

el-input-number 组件添加必填校验和自定义校验函数,手动输入值后,无法及时清除校验提示,必须失去焦点时才会消失。 希望在输入值之后即时清除校验提示。

二. 产生原因

el-input-number 组件在 blur 时,才会调用 change 事件。

三. 解决方案

1. el-input-number

依然使用 el-input-number 组件,需添加 @input 事件,在 input 事件中触发表单校验,例如:

<el-form-item :prop="formState.age" :rules="rules">
  <el-input-number
    v-model="formState.age"
    @input="inputNumberChange"
  ></el-input-number>
</el-form-item>

<script setup>
const rules= [
  {
    message: "请输入",
    required: true
  },
  {
    validator: (rule, value, callback) => {
      if (value && value > 35) {
        return callback(new Error("不能大于35岁"))
      }
      callback()
    },
    trigger: "blur"
  }
]

const inputNumberChange = () => {
  nextTick(() => {
    // formRef 是 el-form 组件的 ref
    formRef.value.validateField("formState.age")
  })
}
</script>

2. el-input

可以参考:Input 数字类型验证

3. 自定义组件

这种情况下,针对 el-input 组件 UI 不能满足要求,可以在 el-input 基础上进行封装。

目录

相关推荐
关于调用微软Bing API推送链接时,报:errorcode 3 message ERROR!!! InvalidApiKey如何调用百度和微软必应链接收录APIMac安装nvm时,各种问题总结react-app-rewired中如何设置ant-design主题,以及不生效问题Variable @primary-color-hover is undefinedAnt-Design-Vue Form 中,对于多选下拉表表单时,重置时,表单未正确展示