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

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 清除验证状态:

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

elementui form

标签: elementuiform
分享给朋友:

相关文章

elementui响应式布局

elementui响应式布局

响应式布局基础概念 响应式布局指页面能够根据屏幕尺寸自动调整结构和样式,确保在不同设备上呈现良好的用户体验。Element UI 基于 Vue.js,其组件默认支持响应式设计,但需结合 CSS 媒体查…

elementui中文网

elementui中文网

Element UI 中文网相关信息 Element UI 是一款基于 Vue.js 的开源 UI 组件库,由饿了么前端团队开发和维护。以下是关于 Element UI 中文网的相关信息: 官方网站…

elementui使用

elementui使用

安装 Element UI 通过 npm 或 yarn 安装 Element UI: npm install element-ui --save # 或 yarn add element-ui 在项…

vue elementui

vue elementui

Vue 中使用 Element UI Element UI 是一套基于 Vue 2.0 的桌面端组件库,提供丰富的 UI 组件和交互功能。以下是如何在 Vue 项目中集成和使用 Element UI…

elementui vue2

elementui vue2

使用 Element UI 与 Vue 2 的指南 Element UI 是一个基于 Vue 2 的组件库,专为开发者、设计师和产品经理设计,提供丰富的组件和交互方式。 安装 Element UI…

elementui键盘

elementui键盘

Element UI 键盘事件处理 Element UI 是基于 Vue.js 的组件库,处理键盘事件通常结合 Vue 的原生事件绑定或自定义指令实现。 常用键盘事件绑定方式 在 Elemen…