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

elementui校验

2026-03-06 07:10:17前端教程

校验基本概念

Element UI 表单校验基于 async-validator 库实现,通过 rules 属性定义校验规则。校验触发方式包括手动触发(调用 validate 方法)和自动触发(表单字段变化时)。

表单校验规则配置

el-formrules 属性中定义校验规则,支持必填、长度、正则、自定义校验等:

rules: {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
  ],
  email: [
    { type: 'email', message: '邮箱格式不正确', trigger: 'blur' }
  ]
}
  • required: 必填校验。
  • min/max: 长度限制。
  • type: 内置类型(如 emailurl)。
  • trigger: 触发时机(blurchange)。

自定义校验规则

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

rules: {
  password: [
    { validator: (rule, value, callback) => {
      if (!/^(?=.*[A-Za-z])(?=.*\d).{6,}$/.test(value)) {
        callback(new Error('密码需包含字母和数字且长度≥6'));
      } else {
        callback();
      }
    }, trigger: 'blur' }
  ]
}
  • callback() 必须调用,参数为 Error 对象时表示校验失败。

动态校验规则

通过响应式数据动态修改规则:

data() {
  return {
    dynamicRule: { required: true, message: '动态规则必填' }
  };
},
methods: {
  updateRule() {
    this.dynamicRule = { min: 5, message: '长度需≥5' };
  }
}

表单整体校验

调用 validate 方法校验整个表单:

this.$refs.form.validate(valid => {
  if (valid) {
    console.log('校验通过');
  } else {
    console.log('校验失败');
  }
});
  • 通过 $refs 获取表单实例。

清除校验结果

使用 clearValidate 清除单个字段或整个表单的校验状态:

this.$refs.form.clearValidate(['username']); // 清除指定字段
this.$refs.form.clearValidate();            // 清除整个表单

校验样式与反馈

  • 错误提示通过 el-form-itemerror 插槽自定义。
  • 校验失败时,字段会自动添加 is-error 类名。

嵌套数据校验

对嵌套对象或数组字段使用 prop 路径语法:

rules: {
  'user.name': [{ required: true }],
  'items[0].value': [{ min: 10 }]
}

异步校验

在自定义校验函数中返回 Promise 或调用 callback 处理异步操作:

elementui校验

validator: (rule, value, callback) => {
  axios.get('/check', { params: { value } }).then(res => {
    res.valid ? callback() : callback(new Error('异步校验失败'));
  });
}

标签: elementui
分享给朋友:

相关文章

yarn elementui

yarn elementui

安装 Element UI 与 Yarn Element UI 是一个基于 Vue.js 的组件库,使用 Yarn 作为包管理工具可以快速安装和集成。以下是具体方法: 确保已安装 Yarn 和 Vu…

elementui progress

elementui progress

Element UI Progress 组件 Element UI 提供了一个 Progress 组件,用于展示操作的当前进度。该组件支持多种样式和配置选项,适用于文件上传、任务完成度等场景。 基本…

elementui抖动

elementui抖动

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

替代elementui

替代elementui

替代 ElementUI 的 UI 框架推荐 ElementUI 是基于 Vue 2.x 的组件库,若需替代方案,可考虑以下框架: Vue 2.x 兼容方案 1. Ant Design Vue…

elementui tabs

elementui tabs

ElementUI Tabs 基础用法 ElementUI 的 Tabs 组件提供了一种便捷的方式来组织内容,通过标签页的形式展示不同板块的信息。使用 el-tabs 和 el-tab-pane 组件…

elementui系列

elementui系列

Element UI 系列概述 Element UI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件,适用于快速构建企业级中后台产品。以下是 Elem…