Не работает очистка ошибок при переносе с обработчика в функцию
Это учебное задание. Первоначально, clearValidation
был в обработчике редактирования учетки, все корректно работало:
openButtonPopupEdit.addEventListener('click', () => {
nameInput.value = profileTitle.textContent;
jobInput.value = profileDescription.textContent;
openModal(popupEdit);//открыть модальное окно
clearValidation(formEditProfile, validationConfig);//очистить ошибки валидации при успешной загрузке
});
При повторном открытии модального окна все ошибки очищались. Ревьюер сделал замечание:
Функционал сброса ошибок валидации данной формы следует перенести в хэндлер сабмита формы (в цепочку
then
), так как ошибки валидации следует очищать только при успешном сабмите формы
я удалила clearValidation
из обработчика и перенесла в функцию editAccount
согласно замечанию ревьюера:
function editAccount(evt) {
evt.preventDefault();
renderLoading(true, buttonFormSubmit);
patchProfileRequest(nameInput.value, jobInput.value)
.then(() => {
profileTitle.textContent = nameInput.value;
profileDescription.textContent = jobInput.value;
closeModal(popupEdit);
clearValidation(formEditProfile, validationConfig);//очистить ошибки валидации при успешной загрузке
})
.catch((error) => {
console.log(`Ошибка при загрузке данных: ${error}`);
})
.finally(() => {
renderLoading(false, buttonFormSubmit);
}) };
как итог очистка ошибок перестала работать, при повторном открытии модального окна ошибки остаются. Но, при этом в консоли ошибок нет, .then
также выполняется. В чем может быть проблема, как перенести clearValidation
в editAccount
, чтобы все при этом корректно работало?
Фрагмент разметки:
<div class="popup popup_type_edit popup_is-animated">
<div class="popup__content">
<button type="button" class="popup__close" aria-label="закрыть окно"></button>
<h3 class="popup__title">Редактировать профиль</h3>
<form class="popup__form" name="edit-profile" novalidate>
<input
type="text"
name="name"
class="popup__input popup__input_type_name"
id="name-input"
placeholder="Имя"
required
minlength="2"
maxlength="40"
pattern="^[a-zA-Zа-яёА-ЯЁ\s\-]+$"
data-error-message="Разрешены только латинские, кириллические буквы, знаки дефиса и пробелы">
<span class="popup__error name-input-error"></span>
<input
type="text"
name="description"
class="popup__input popup__input_type_description"
id="description-input"
placeholder="Занятие"
required
minlength="2"
maxlength="200"
pattern="^[a-zA-Zа-яёА-ЯЁ\s\-]+$"
data-error-message="Разрешены только латинские, кириллические буквы, знаки дефиса и пробелы">
<span class="popup__error description-input-error"></span>
<button type="submit" class="button popup__button">Сохранить</button>
</form>
</div>
</div>
Функции открытия и закрытия попапов:
//открытие попап
export const openModal = (popupElement) => {
popupElement.classList.add('popup_is-opened');
document.addEventListener('keydown', closeByEsc);
};
//закрытие попап
export const closeModal = (popupElement) => {
popupElement.classList.remove('popup_is-opened');
document.removeEventListener('keydown', closeByEsc);
};
Функция очистки ошибок валидации
export const clearValidation = (formElement, validationConfig) => {
const inputList = Array.from(formElement.querySelectorAll(validationConfig.inputSelector));
const buttonElement = formElement.querySelector(validationConfig.submitButtonSelector);
inputList.forEach((inputElement) => {
hideInputError(formElement, inputElement, validationConfig);
});
toggleButtonState(inputList, buttonElement, validationConfig);
};
Ответы (1 шт):
Разобралась… все работало, просто в голове не уложилось требование ревьюера. Что ошибки должны очищаться при успешном сабмите, а он у меня активен только в том случае, когда валидация успешна. Поэтому ошибки не очищались