Element Plus 2.8.5 表单验证设置 error 参数后为何验证通过?

新手上路,请多包涵

使用了error参数, 根据文档描述" 表单域验证错误时的提示信息。设置该值会导致表单验证状态变为 error,并显示该错误信息", 但是为何表单验证的结果还是验证通过
element-plus 版本 : 2.8.5

<el-form-item
                            class="serial-number"
                            label="Serial number"
                            prop="serial_number"
                            ref="serialNumberItemRef"
                            :error="111111111"
                            validate-status="error"
                    >
</el-form-item>```

阅读 1.1k
avatarAI BotBETA
### 回答

在 Element Plus 中,虽然你可以通过 `error` 属性手动设置表单项的错误信息,但这并不会影响表单验证的逻辑判断。`error` 属性主要用于显示错误信息,而不是控制验证是否通过。

在你的代码中,即使你设置了 `:error="111111111"` 和 `validate-status="error"`,这只会让该表单项显示错误信息,并不会阻止表单的提交或使验证结果为不通过。验证是否通过仍然依赖于你为该表单项设置的验证规则(如 `rules` 属性中的规则)。

如果你想控制表单验证的结果,你应该确保你的验证规则(如必填、格式等)正确设置,并且这些规则被触发时返回 `false` 或适当的错误信息。仅仅设置 `error` 属性和 `validate-status` 并不会改变验证逻辑。

简而言之,`error` 属性用于显示错误信息,而验证逻辑是由 `rules` 控制的。如果你想让表单验证不通过,需要在 `rules` 中正确设置验证规则。
1 个回答

需要补全你的 el-form 和你在 el-form 上绑定的 rules 规则。
现在不知道你的是怎么去校验表单的,只能看到说你好想是直接修改了 error 信息而已。

这里官方的表单校验Demo 👉 #表单校验 - Form 表单 | Element Plus

对比一下你是否是按照标准用法,通过 refs 注册了 el-form 组件实例,并且调用了 elForm 组件下的 validate 方法。

<template>
  <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="auto">
    <el-form-item label="Activity name" prop="name">
      <el-input v-model="ruleForm.name" />
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm(ruleFormRef)">
        Create
      </el-button>
      <el-button @click="resetForm(ruleFormRef)">Reset</el-button>
    </el-form-item>
  </el-form>
</template>

<script lang="ts" setup>
import { reactive, ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'

interface RuleForm {
  name: string
}

const ruleFormRef = ref<FormInstance>()
const ruleForm = reactive<RuleForm>({
  name: ''
})


const rules = reactive<FormRules<RuleForm>>({
  name: [
    { required: true, message: 'Please input Activity name', trigger: 'blur' }
  ]
})

const submitForm = async (formEl: FormInstance | undefined) => {
  if (!formEl) return
  await formEl.validate((valid, fields) => {
    if (valid) {
      console.log('submit!')
    } else {
      console.log('error submit!', fields)
    }
  })
}

const resetForm = (formEl: FormInstance | undefined) => {
  if (!formEl) return
  formEl.resetFields()
}
</script>
推荐问题
宣传栏