Element Plus предоставляет мощный набор компонентов для построения
форм в приложениях на Vue 3. Основным компонентом
является <el-form>, который обеспечивает структуру
формы, управление данными, валидацию и стилизацию.
<template>
<el-form :model="formData" :rules="rules" ref="formRef" label-width="120px">
<el-form-item label="Имя" prop="name">
<el-input v-model="formData.name"></el-input>
</el-form-item>
<el-form-item label="Возраст" prop="age">
<el-input-number v-model="formData.age" :min="0" :max="120"></el-input-number>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">Отправить</el-button>
<el-button @click="resetForm">Сбросить</el-button>
</el-form-item>
</el-form>
</template>
<script setup>
import { ref } from 'vue'
const formRef = ref(null)
const formData = ref({
name: '',
age: null
})
const rules = {
name: [
{ required: true, message: 'Пожалуйста, введите имя', trigger: 'blur' }
],
age: [
{ type: 'number', required: true, message: 'Введите возраст', trigger: 'change' }
]
}
const submitForm = () => {
formRef.value.validate(valid => {
if (valid) {
console.log('Форма успешно отправлена', formData.value)
} else {
console.log('Ошибка валидации')
return false
}
})
}
const resetForm = () => {
formRef.value.resetFields()
}
</script>
<el-form>v-model в элементах формы.true, все элементы формы
отображаются в одну строку, полезно для компактных форм.medium,
small, mini).<el-form-item><el-form-item> связывает отдельное поле с объектом
данных и правилами валидации. Ключевые атрибуты:
model,
для которого применяется валидация.Element Plus интегрируется с большинством своих компонентов ввода:
<el-input> — однострочное текстовое поле.<el-input-number> — числовой ввод с кнопками
увеличения/уменьшения.<el-select> — выпадающий список с поддержкой
поиска и множественного выбора.<el-checkbox> и
<el-checkbox-group> — одиночные и групповые
чекбоксы.<el-radio> и <el-radio-group>
— радиокнопки для выбора одного варианта.<el-switch> — переключатель состояния.<el-date-picker> — выбор даты и времени.<el-form-item label="Пол" prop="gender">
<el-radio-group v-model="formData.gender">
<el-radio label="male">Мужской</el-radio>
<el-radio label="female">Женский</el-radio>
</el-radio-group>
</el-form-item>
В Element Plus используется встроенная система валидации на основе async-validator. Основные типы правил:
string,
number, array, boolean,
date).Пример пользовательской валидации:
const rules = {
password: [
{ required: true, message: 'Введите пароль', trigger: 'blur' },
{ validator: (rule, value) => value.length >= 6, message: 'Пароль должен быть минимум 6 символов', trigger: 'blur' }
]
}
Элементы формы можно контролировать через ref:
callback получает true или
false.right,
left, top) — определяет позицию текста
метки.ElForm или локально для
<el-form-item>.inline и label-width, можно
создавать горизонтальные или вертикальные формы.Динамическая генерация полей возможна через v-for. Важно
правильно назначать prop и key:
<el-form-item
v-for="(field, index) in dynamicFields"
:key="index"
:label="field.label"
:prop="field.name"
>
<el-input v-model="formData[field.name]"></el-input>
</el-form-item>
Element Plus поддерживает локализацию через
ElLocaleProvider. Для кастомизации стилей форм используется
глобальная тема и классы:
medium, small, mini).<el-form> и
<el-form-item>.change, blur).Эта гибкость позволяет создавать как простые контактные формы, так и сложные интерфейсы для управления данными с динамической логикой, валидацией и интеграцией с внешними источниками данных.