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

elementui form

2026-01-14 22:03:02前端教程

ElementUI Form 基础用法

ElementUI 的 Form 组件提供了表单验证、布局和样式支持。通过 el-form 标签包裹表单项,结合 el-form-itemel-input 等组件快速构建表单。

<template>
  <el-form :model="formData" :rules="formRules" ref="formRef">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="formData.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input v-model="formData.password" type="password"></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 {
      formData: { username: '', password: '' },
      formRules: {
        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
      }
    }
  },
  methods: {
    submitForm() {
      this.$refs.formRef.validate(valid => {
        if (valid) { alert('验证通过'); }
      });
    }
  }
}
</script>

表单验证规则配置

ElementUI 表单验证通过 rules 属性实现,支持多种校验类型:

  • required: 必填字段
  • pattern: 正则表达式校验
  • min/max: 长度限制
  • validator: 自定义校验函数
formRules: {
  email: [
    { required: true, message: '邮箱不能为空' },
    { type: 'email', message: '邮箱格式不正确' }
  ],
  phone: [
    { pattern: /^1[3-9]\d{9}$/, message: '手机号格式错误' }
  ],
  age: [
    { validator: (rule, value, callback) => {
      if (value > 18) callback();
      else callback(new Error('年龄需大于18岁'));
    }}
  ]
}

动态表单实现

通过 v-for 动态生成表单项,需注意每个动态项的 prop 需要与数据模型匹配:

<el-form :model="dynamicForm">
  <el-form-item 
    v-for="(item, index) in dynamicForm.items"
    :key="index"
    :label="'字段' + index"
    :prop="'items.' + index + '.value'"
    :rules="{ required: true, message: '不能为空' }">
    <el-input v-model="item.value"></el-input>
    <el-button @click="removeItem(index)">删除</el-button>
  </el-form-item>
  <el-button @click="addItem">新增字段</el-button>
</el-form>

表单布局方式

ElementUI Form 支持三种布局方式:

  1. 横向布局(默认): label-position="right"
  2. 纵向布局: label-position="top"
  3. 行内布局: 添加 inline 属性
<!-- 纵向布局示例 -->
<el-form label-position="top">
  <el-form-item label="用户名">
    <el-input></el-input>
  </el-form-item>
</el-form>

<!-- 行内表单 -->
<el-form inline>
  <el-form-item label="日期">
    <el-date-picker></el-date-picker>
  </el-form-item>
</el-form>

自定义表单验证

通过 validator 实现复杂验证逻辑时,注意回调函数的使用:

const validatePass = (rule, value, callback) => {
  if (value.length < 6) {
    callback(new Error('密码不能少于6位'));
  } else if (!/[A-Z]/.test(value)) {
    callback(new Error('需包含大写字母'));
  } else {
    callback();
  }
};

表单重置与清除验证

通过 resetFields 方法重置表单,clearValidate 清除验证状态:

elementui form

methods: {
  resetForm() {
    this.$refs.formRef.resetFields();
  },
  clearValidation() {
    this.$refs.formRef.clearValidate(['username']);
  }
}

标签: elementuiform
分享给朋友:

相关文章

iwiew elementui

iwiew elementui

iView 与 Element UI 对比 iView 和 Element UI 都是基于 Vue.js 的 UI 组件库,适用于快速开发企业级中后台管理系统。以下是两者的详细对比: 设计风…

elementui echarts

elementui echarts

ElementUI 与 ECharts 集成指南 ElementUI 是饿了么团队开发的 Vue.js 组件库,ECharts 是百度开源的 JavaScript 图表库。两者结合可快速构建数据可视化…

elementui案例

elementui案例

Element UI 案例 Element UI 是一个基于 Vue.js 的组件库,广泛用于构建企业级中后台前端界面。以下是一些常见的 Element UI 案例和使用场景: 表单设计 Eleme…

elementui import

elementui import

安装 Element UI 在项目中安装 Element UI 可以通过 npm 或 yarn 完成: npm install element-ui --save # 或 yarn add el…

elementui渐变

elementui渐变

实现ElementUI渐变效果的方法 ElementUI组件库本身不直接提供渐变样式,但可以通过CSS自定义实现渐变效果。以下是几种常见实现方式: 背景渐变 通过CSS的linear-gradien…

idea elementui

idea elementui

Element UI 简介 Element UI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并开源。它提供了丰富的 UI 组件(如表格、表单、弹窗等),支持响应式布局和主题定制,适…