Element Plus предоставляет мощный набор компонентов и утилит для
организации валидации форм на стороне клиента, что
позволяет обеспечить корректность данных до их отправки на сервер.
Основным элементом является компонент ElForm, который
управляет состоянием формы и взаимодействует с правилами валидации,
заданными через rules.
ElForm и
его свойстваElForm является контейнером для всех
элементов формы. Основные свойства:
model – объект, который связывает
данные формы с Vue-состоянием.rules – объект с правилами валидации
для каждого поля формы.label-width – ширина меток полей.status-icon – отображение иконки
состояния валидации.validate-on-rule-change –
автоматически проверять поле при изменении правил.Пример базовой структуры:
<template>
<el-form :model="formData" :rules="formRules" ref="myForm">
<el-form-item label="Имя" prop="name">
<el-input v-model="formData.name"></el-input>
</el-form-item>
<el-form-item label="Email" prop="email">
<el-input v-model="formData.email"></el-input>
</el-form-item>
<el-button @click="submitForm">Отправить</el-button>
</el-form>
</template>
<script>
export default {
data() {
return {
formData: {
name: '',
email: ''
},
formRules: {
name: [
{ required: true, message: 'Введите имя', trigger: 'blur' },
{ min: 3, max: 50, message: 'Длина от 3 до 50 символов', trigger: 'blur' }
],
email: [
{ required: true, message: 'Введите email', trigger: 'blur' },
{ type: 'email', message: 'Некорректный email', trigger: ['blur', 'change'] }
]
}
}
},
methods: {
submitForm() {
this.$refs.myForm.validate((valid) => {
if (valid) {
console.log('Форма корректна', this.formData);
} else {
console.log('Форма содержит ошибки');
return false;
}
});
}
}
}
</script>
Правила задаются объектом rules и поддерживают несколько
типов проверки:
required: true.type: 'email',
'number', 'url'.min,
max.validator: (rule, value, callback) => {}.Пример пользовательской функции:
{
validator: (rule, value, callback) => {
if (!/^[A-Z]/.test(value)) {
callback(new Error('Имя должно начинаться с заглавной буквы'));
} else {
callback();
}
},
trigger: 'blur'
}
Каждое правило может иметь событие-триггер, которое определяет момент проверки:
blur – при потере фокуса поля.change – при изменении значения.trigger: ['blur', 'change'].validate – проверяет все поля формы.
Возвращает callback с результатом valid.validateField – проверяет конкретное
поле по ключу prop.resetFields – сбрасывает значения и
ошибки.clearValidate – очищает сообщения об
ошибках без изменения данных.Пример проверки конкретного поля:
this.$refs.myForm.validateField('email', (errorMessage) => {
if (errorMessage) {
console.log('Ошибка в email:', errorMessage);
}
});
ElFormItemКаждое поле должно быть обернуто в
ElFormItem с указанием свойства
prop. Это связывает поле с правилом валидации и позволяет
автоматически показывать ошибки.
Ключевые моменты:
label – отображаемое название поля.prop – ключ в объекте model, по которому
происходит валидация.error – ручная установка текста ошибки
(опционально).show-message – включение/отключение отображения
ошибок.Для сложных случаев можно объединять несколько правил:
{
validator: async (rule, value, callback) => {
const exists = await checkUsernameExists(value);
if (exists) {
callback(new Error('Имя уже занято'));
} else {
callback();
}
},
trigger: 'blur'
}
Element Plus автоматически отображает состояния поля:
success – корректное значение.error – ошибка валидации.validating – процесс проверки (для
асинхронной валидации).С помощью свойства status-icon можно включить визуальные
иконки состояния рядом с полями.
Сообщения об ошибках можно задавать как статически, так и динамически:
{
required: true,
message: `Поле ${fieldName} обязательно`,
trigger: 'blur'
}
Также можно интегрировать с библиотеками локализации, чтобы автоматически переводить ошибки для разных языков интерфейса.
model и rules
централизованно для упрощения поддержки.ElForm, если правила и поля сильно
различаются.prop для каждого
ElFormItem — иначе валидация работать не будет.validating, чтобы пользователь видел
процесс.Эти механизмы делают Element Plus гибким инструментом для реализации валидации на стороне клиента, позволяя создавать надежные формы с минимальными усилиями и высокой наглядностью.