I have the following event-listeners
element2.addEventListener("focusout", hideDropdown);
element3.addEventListener("click", addSelectedOption);
when I click on element3, only function1 is called, but I want both to be called since clicking element3 also means that element2 lost focus.
When I remove the the first event listener, then the second one works. Why is this the case? and how can I get around it?
Here is the code:
<!DOCTYPE html>
<html>
<header>
<style>
#element3 {
display: none;
}
</style>
</header>
<body>
<label>Multi Select</label>
<div id="element1">
<p id="element2" contenteditable="true">Select required competencies</p>
</div>
<div id="element3" class="auto-complete-select-dropdown">
<p>One</p>
<p>Two</p>
<p>Three</p>
<p>Four</p>
</div>
<script>
var element1 = document.getElementById("element1");
var element2 = document.getElementById("element2");
var element3 = document.getElementById("element3");
element2.addEventListener("keyup", showDropdown);
element2.addEventListener("focusout", hideDropdown);
element3.addEventListener("click", addSelectedOption);
function showDropdown() {
var element = document.getElementById("element3");
if (element.style.display != "block")
element.style.display = "block";
}
function hideDropdown() {
var element = document.getElementById("element3");
if (element.style.display != "none")
element.style.display = "none";
}
function addSelectedOption(event) {
alert("here");
element = event.target;
var element1 = document.getElementById("element1");
var p = document.createElement('p');
p.textContent = element.textContent.trim();
}
</script>
</body>
</html>
element1andelement2... like in HTML. Events travel up and down the DOM tree.