den0820
@den0820
Фронтенд Junior разработчик.

Функция с event.target не корректно отрабатывает?

Здравствуйте. Подскажите, пожалуйста, почему не правильно отрабатывает функция
document.querySelector('.tvz-modal').addEventListener('click', function(e) {
        var $this = this;
        var target = e.target || e.srcElement;
        //e.stopPropagation();

        while(target != $this) {
            if(target.classList.contains('tvz-modal')) {
                self.closeAll();
            }
            target = target.parentNode;
            console.log(target, $this);
        }
    });


Идея состоит в том, чтобы при клике на любую свободную от формы в модальном окне область, модальное окно закрывалось. Оно в принципе закрывается...но кликнув на поле из формы модального окна также все закрывается...
  • Вопрос задан
  • 440 просмотров
Решения вопроса 1
mr-volevach
@mr-volevach
web-developer
Попробуйте так
document.querySelector('.tvz-modal').addEventListener('click', function(e) {
        var target = e.target;
        if(target.classList.contains('tvz-modal'))
        	self.closeAll();
    });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MrCheater
Full-Stack JS. В прошлом программист-олимпиадник
кроме target есть еще и currentTarget
https://developer.mozilla.org/ru/docs/Web/API/Even...

сделайте проверку DomElement подложки окна === DomElement подходящего таргета

если нет подложки - сделайте её - зафигачив fixed div на весь экран под модальным окном
Ответ написан
Комментировать
den0820
@den0820 Автор вопроса
Фронтенд Junior разработчик.
Ну так currentTarget если даже и не будет равен $this, то выполнится target = target.parentNode; пока он не станет им равным...И даже кликнув по форме currentTarget не будет равным $this, но будет выполняться инструкция target = target.parentNode; ...это замкнутый круг какой то((
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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