Задать вопрос
@Happymalina

Как повторить эффект анимации при ошибке заполненности полей формы?

Направьте пожалуйста или подскажите. В тестовом проекте было обучение основам JS на примере формы входа. При клике на пункт меню "Вход" выезжала форма вида - "логин", "пароль" и кнопка "войти". Сначала проверяем есть ли данные о логине, если есть - то заполняем поле "логин" и фокусируемся на поле "пароль". Если пользователь нажал кнопку "войти", но в полях пусто или ошибка - форма должна немного потрястись. Она трясется только один раз. Нашла вариант с JQuery, но хочется понять JS. Предполагаю, что нужен какой-то цикл, чтобы этот эффект был каждый раз после нажатия на кнопку при неверно заполненных полях. НО не могу понять как его написать правильно...Подскажите пожалуйста, какие могут быть тут "варианты ответа". Вот код:

<div class="account-menu">
      <a href="#" class="account-menu-enter">Вход </a>
</div>

.form-popup-show {
        display: block;
        animation: login-open 0.7s;
        -webkit-animation: login-open 0.7s;
    }
    
    .form-popup-close {
        color: #000;
        position: absolute;
        margin: -35px 0 0 180px;
        text-align: center;
        text-decoration: none;
        width: 360px;
    }

    .form-popup-error {
        animation: login-error 0.2s;
         -webkit-animation: login-error 0.2s;
    }

var link = document.querySelector('.account-menu-enter');
var popup = document.querySelector('.form-popup');
var close = popup.querySelector('.form-popup-close');
var form = popup.querySelector('form');
var login = form.querySelector('.field-popup-login');
var password = form.querySelector('.field-popup-password');
var storage = localStorage.getItem("login");

link.addEventListener('click', function(event) {
	event.preventDefault();
	popup.classList.add('form-popup-show');
		if (storage) {
			login.value = storage;
			password.focus;
		}
		else {
			login.focus();
		}
	}, false );

link.addEventListener("click", function(event) {
	if (popup.classList.contains("form-popup-error")) {
		popup.classList.remove("form-popup-error");
	}
}, false);


close.addEventListener('click', function(event) {
	event.preventDefault();
	popup.classList.remove('form-popup-show');
	}, false);


form.addEventListener("submit", function(event) {
	if (!login.value || !password.value) {
		event.preventDefault();
		popup.classList.add("form-popup-error")
	}
	else {
		localStorage.setItem("login", login.value);
	}
}, false);
  • Вопрос задан
  • 3108 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
sanchezzzhak
@sanchezzzhak
Ля ля ля...
Посоветую для анимации css фреймворк daneden.github.io/animate.css

// события вызываются для удаления класса анимации когда анимация проиграла
$('#yourElement').on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', doSomething);

В вашем случаи нужно удалить класс анимации и восстановить значения css по умолчанию и добавить заново класс что бы анимация проигралась заново.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы