javascript-侦听器单击并聚焦出问题

javascript-侦听器单击并聚焦出问题,javascript,click,focusout,Javascript,Click,Focusout,我正在用javascript开发一个自动完成系统。 我有一个输入(searchInput),当我在其中键入一些文本时,它会用div by result更新一个div(resultsDiv)。 在每个添加的结果上,我添加了一个调用函数的eventListener div.addEventListener('click', function(e) { chooseResult(e.target); //this function write the selected result in sear

我正在用javascript开发一个自动完成系统。 我有一个输入(searchInput),当我在其中键入一些文本时,它会用div by result更新一个div(resultsDiv)。 在每个添加的结果上,我添加了一个调用函数的eventListener

div.addEventListener('click', function(e) {
  chooseResult(e.target); //this function write the selected result in searchInput
});
一切都很好,但现在我想在焦点不在searchInput时隐藏resultsDiv。 所以我做了

问题是,单击每个结果的事件不再起作用,因为当我单击结果div时,我失去了对searchInput的关注,因此searchInput被隐藏,并且没有调用函数chooseResult

我需要focusout,因为如果我没有它,即使我们选择了其他字段,resultsDiv仍然可见

有人知道怎么做吗?还是解决办法? 谢谢


编辑

我找到了一个解决办法。在事件focusout中,设置一个超时,稍后调用一个隐藏resultsDiv的函数,这样事件单击就有时间发生

searchInput.addEventListener('focusout', function(e) {
   setTimeout(hideResultsDiv, 150);
});

function hideResultsDiv() {
   resultsDiv.style.display = 'none';
}
这在我看来有点棘手,但它确实起到了作用

searchInput.addEventListener('focusout', function(e) {
   setTimeout(hideResultsDiv, 150);
});

function hideResultsDiv() {
   resultsDiv.style.display = 'none';
}