当前位置:首页 > 前端教程

elementui validate

2026-01-15 19:33:11前端教程

ElementUI 表单验证

ElementUI 提供了强大的表单验证功能,基于 async-validator 实现。通过 rules 属性定义验证规则,结合 el-form 和 el-form-item 组件实现验证逻辑。

基本用法

在 el-form 上绑定 model 和 rules 属性,在 el-form-item 上设置 prop 属性对应 model 的字段名。

<template>
  <el-form :model="form" :rules="rules" ref="form">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="form.username"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm">提交</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      form: {
        username: ''
      },
      rules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    submitForm() {
      this.$refs.form.validate(valid => {
        if (valid) {
          alert('验证通过')
        } else {
          return false
        }
      })
    }
  }
}
</script>

验证规则配置

验证规则是一个对象数组,每个规则对象包含以下常用属性:

  • required: 是否必填
  • message: 错误提示信息
  • trigger: 触发方式(blur/change)
  • min/max: 最小/最大长度
  • type: 数据类型(string/number/boolean/...)
  • pattern: 正则表达式
  • validator: 自定义验证函数
rules: {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { validator: (rule, value, callback) => {
      if (value.length < 3) {
        callback(new Error('长度不能小于3'))
      } else {
        callback()
      }
    }, trigger: 'blur' }
  ]
}

动态表单验证

对于动态生成的表单项,需要为每个表单项指定唯一的 prop 路径:

<el-form-item 
  v-for="(item, index) in dynamicItems" 
  :key="index"
  :prop="'items.' + index + '.value'"
  :rules="{
    required: true,
    message: '不能为空',
    trigger: 'blur'
  }"
>
  <el-input v-model="item.value"></el-input>
</el-form-item>

表单重置与清除验证

使用表单实例的方法控制验证状态:

// 重置表单
this.$refs.form.resetFields()

// 清除验证
this.$refs.form.clearValidate()

// 验证特定字段
this.$refs.form.validateField('username')

自定义验证

通过 validator 函数实现复杂验证逻辑:

rules: {
  password: [
    { validator: (rule, value, callback) => {
      if (!value) {
        return callback(new Error('密码不能为空'))
      }
      if (!/^(?=.*[a-z])(?=.*[A-Z]).{6,}$/.test(value)) {
        return callback(new Error('必须包含大小写字母且至少6位'))
      }
      callback()
    }, trigger: 'blur' }
  ]
}

表单验证事件

el-form 提供 validate 事件监听验证结果:

elementui validate

<el-form @validate="onValidate">
  <!-- 表单内容 -->
</el-form>
methods: {
  onValidate(prop, isValid, message) {
    console.log(prop, isValid, message)
  }
}

分享给朋友:

相关文章

elementui重写

elementui重写

重写 Element UI 组件的方法 Element UI 是一个基于 Vue.js 的组件库,重写其组件可以通过以下几种方式实现,具体取决于需求场景。 全局样式覆盖 通过修改 CSS 变量或覆盖…

elementui字典

elementui字典

以下是关于 Element UI 字典功能的整理,结合常见使用场景和官方文档的实践方法: 字典数据绑定 Element UI 的 el-select 组件通常与字典数据结合使用。字典数据格式建议为数…

elementui button

elementui button

基本用法 Element UI 的 Button 组件提供多种样式和功能,可以通过 type 属性设置按钮类型。常见类型包括 primary、success、info、warning、danger。…

elementui抖动

elementui抖动

ElementUI 抖动问题解决方法 ElementUI 组件在使用过程中可能出现抖动问题,通常是由于动画、布局或渲染优化不足导致。以下是几种常见的解决方案: 调整过渡动画 ElementUI 部分…

elementui教程

elementui教程

ElementUI 教程 ElementUI 是基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发企业级应用。以下是基础教程和进阶使用指南。 安装与引入 通过 npm 安…

elementui增删

elementui增删

ElementUI 表格的增删操作 ElementUI 提供了强大的表格组件,支持数据的增删改查操作。以下是实现增删功能的详细方法: 安装 ElementUI 确保项目中已安装 ElementUI,…