elementUI表单
ElementUI 表单基础用法
ElementUI 提供了 el-form 组件用于快速构建表单。表单需要绑定数据模型并通过 rules 属性设置校验规则。
<template>
<el-form :model="formData" :rules="rules" 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: ''
},
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' }
]
}
}
},
methods: {
submitForm() {
this.$refs.formRef.validate(valid => {
if (valid) {
// 表单验证通过
}
})
}
}
}
</script>
表单验证规则配置
ElementUI 表单验证使用 async-validator 库,支持多种验证规则:
rules: {
fieldName: [
{ required: true, message: '必填项', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' },
{ pattern: /^[a-z]+$/, message: '只能包含小写字母', trigger: 'blur' },
{ validator: customValidator, trigger: 'blur' }
]
}
自定义验证函数示例:
const customValidator = (rule, value, callback) => {
if (value !== 'example') {
callback(new Error('输入必须为example'))
} else {
callback()
}
}
表单布局方式
ElementUI 表单支持多种布局方式:
内联表单:

<el-form :inline="true">
<!-- 表单项 -->
</el-form>
标签位置设置:
<el-form label-position="top">
<!-- 表单项 -->
</el-form>
响应式布局:
<el-form label-width="auto">
<!-- 表单项 -->
</el-form>
动态表单处理
动态增减表单项:

<el-form>
<el-form-item v-for="(item, index) in dynamicItems" :key="index">
<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>
表单提交与重置
表单提交和重置方法:
methods: {
submitForm() {
this.$refs.formRef.validate(valid => {
if (valid) {
// 提交逻辑
}
})
},
resetForm() {
this.$refs.formRef.resetFields()
}
}
表单自定义验证
自定义复杂验证逻辑:
methods: {
validatePassword(rule, value, callback) {
if (value.length < 6) {
callback(new Error('密码不能少于6位'))
} else if (!/[A-Z]/.test(value)) {
callback(new Error('必须包含大写字母'))
} else {
callback()
}
}
}
表单禁用状态
设置整个表单或单个表单项为禁用状态:
<el-form disabled>
<!-- 整个表单禁用 -->
</el-form>
<el-form-item>
<el-input :disabled="true"></el-input>
</el-form-item>






