Prompts-MCP 686 skills · ai / design / design-pattern / framework / fundamentals / habit / lang / tech-selection /mcp/sse
framework framework/element-plus/form-validation.examples.md medium

form-validation.examples

element-plus · ElForm 校验 · 模板示例

配合 form-validation.md<script setup> 使用。要点:<el-form> 上挂 ref / :model / :rules,每个待校验字段的 <el-form-item> 必须写 prop,否则该字段校验静默失效。

<template>
  <el-form ref="formRef" :model="form" :rules="rules" label-width="90">
    <!-- prop 必填:与 rules 的 key 对应才会触发校验 -->
    <el-form-item label="姓名" prop="name">
      <el-input v-model="form.name" />
    </el-form-item>
    <el-form-item label="密码" prop="pwd">
      <el-input v-model="form.pwd" type="password" />
    </el-form-item>
    <el-form-item label="确认密码" prop="confirm">
      <el-input v-model="form.confirm" type="password" />
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">提交</el-button>
      <el-button @click="onReset">重置</el-button>
    </el-form-item>
  </el-form>
</template>

触发时机 trigger

  • trigger: "blur":失焦校验,适合输入框、异步查重。
  • trigger: "change":值变即校验,适合 select / radio / checkbox。
  • 数组可叠加:trigger: ["blur", "change"]

单字段校验 / 滚动到错误

// 只校验部分字段(传 prop 数组)
await formRef.value?.validateField(["name", "pwd"]);
// 清除指定字段校验态(不重置值)
formRef.value?.clearValidate(["name"]);
// 提交失败滚动到首个错误字段
formRef.value?.validate((_ok, fields) => {
  const first = fields && Object.keys(fields)[0];
  if (first) formRef.value?.scrollToField(first);
});