В библиотеке Element Plus управление формами и их
валидацией реализуется через компонент <el-form> и
связанные с ним элементы формы (<el-form-item>).
Одной из ключевых возможностей является сброс
валидации, позволяющий очистить все ошибки валидации и вернуть
форму к исходному состоянию. Это особенно важно при динамическом
управлении формами, повторном использовании компонентов и реализации
функций «Очистить» или «Сбросить форму».
Компонент <el-form> предоставляет два основных
метода, влияющих на валидацию:
model) и очищает все
ошибки валидации. Пример использования:<template>
<el-form :model="formData" :rules="rules" ref="myForm">
<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 v-model="formData.age"></el-input>
</el-form-item>
<el-button type="primary" @click="submitForm">Отправить</el-button>
<el-button @click="resetForm">Сбросить</el-button>
</el-form>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const formData = ref({
name: '',
age: ''
});
const rules = {
name: [{ required: true, message: 'Введите имя', trigger: 'blur' }],
age: [{ required: true, message: 'Введите возраст', trigger: 'blur' }]
};
const myForm = ref(null);
const submitForm = () => {
myForm.value.validate((valid) => {
if (valid) {
console.log('Форма корректна', formData.value);
} else {
console.log('Ошибка валидации');
}
});
};
const resetForm = () => {
myForm.value.resetFields();
};
return { formData, rules, myForm, submitForm, resetForm };
}
};
</script>
Особенности resetFields():
model
при инициализации.<el-form-item>, удаляются.props, либо вызвать
без аргументов, чтобы очистить все ошибки.const clearErrors = () => {
myForm.value.clearValidate(['name']); // очищает только поле "Имя"
};
// или очистка всех ошибок
myForm.value.clearValidate();
Примечания:
clearValidate() полезен, когда необходимо оставить
данные формы, но убрать предупреждения после исправления ошибки.ref для доступа к форме:
Методы resetFields и clearValidate доступны
только через ссылку на форму (ref="myForm").model есть начальные значения, resetFields
вернёт их. Если нужно очистить форму полностью, начальные значения
должны быть пустыми.rules) после инициализации формы рекомендуется
использовать resetFields() для обновления состояния
валидации всех элементов.resetFields() очистит только существующие
элементы на момент вызова. Новые элементы могут требовать отдельного
обновления.Часто встречается задача: сбросить форму после успешной
отправки. Это достигается комбинацией методов
validate и resetFields:
const handleSubmit = () => {
myForm.value.validate((valid) => {
if (valid) {
sendDataToServer(formData.value).then(() => {
myForm.value.resetFields();
});
}
});
};
Такой подход обеспечивает:
Всегда держать ссылку на форму через
ref, чтобы методы были доступны.
Четко различать задачи:
resetFields() – сброс значений и ошибокclearValidate() – только очистка ошибокПри работе с большими формами с динамическими правилами и асинхронными данными следует комбинировать методы для корректного состояния формы.
Эти инструменты позволяют строить гибкие интерфейсы с точным управлением валидацией и минимизируют ошибки пользователя.