Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Необходимо зарегистрировать событие (https://javascript.ru/forum/dom-window/77198-neobkhodimo-zaregistrirovat-sobytie.html)

Борис Ф 05.04.2019 11:53

Необходимо зарегистрировать событие
 
Добрый день, господа!
Докручиваю учебный проект. Необходимо закрывать popup по клику мышки. Соответственно необходимо зарегистрировать событие клика мимо двух элементов (кнопки, которая открывает/закрывает форму и самой формы).
Привожу часть кода:

document.addEventListener('click', function(evt) {

var sBc = document.getElementById("search-button-call");
var sF = document.getElementById("search-form");
if (!sBc && !sF) {
alert ("нажал мимо");
}
});

Как ни странно, он не работает:)

Прошу не кидать тапками, понимаю, что вопрос дурацкий.

ksa 05.04.2019 12:30

Цитата:

Сообщение от Борис Ф
Как ни странно, он не работает

Ничего странного... :no:
Ты сам-то прочитай свое условие
Цитата:

Сообщение от Борис Ф
if (!sBc && !sF)

Какой в нем смысл?

ksa 05.04.2019 12:32

Борис Ф, вот почитай про аналогичную "проблему"...
http://javascript.ru/forum/events/53...vlen-klik.html

Борис Ф 05.04.2019 12:56

Цитата:

Сообщение от ksa (Сообщение 506022)
Ничего странного... :no:
Ты сам-то прочитай свое условие

Какой в нем смысл?

Думал что описываю клик мимо двух вышеуказанных элементов. Для этого соответственно поставил !.

рони 05.04.2019 13:04

Борис Ф,
https://javascript.ru/forum/misc/754...tml#post496299
https://javascript.ru/forum/events/7...tml#post460646
https://javascript.ru/forum/dom-wind...tml#post457301

вагон и маленькая тележка ... искать "закрытие блока" и медитировать над строками с "closest"

Борис Ф 05.04.2019 16:22

Спасибо, господа!
Решил таким образом, вроде работает.

//блок закрытия формы при нажатии мимо
document.addEventListener('click', function(evt) {
if (evt.target.id != "search-form" && evt.target.id != "search-button-call") {
formSearch.classList.remove("js-form-show");//убираем класс открытия формы
formSearch.classList.add("js-form-close");//добавляем класс закрытия формы
}
});


Часовой пояс GMT +3, время: 10:43.