问题描述
我正在使用javascript开发自动补全系统。 我有一个输入( searchInput ),当我在其中输入一些文本时,它会根据结果用div来更新div( resultsDiv )。 在每个添加的结果上,我都添加一个调用函数的eventListener。
div.addEventListener('click',function(e) {
chooseResult(e.target); //this function write the selected result in searchInput
});
一切正常,但是现在我要在焦点不在 searchInput 上时隐藏 resultsDiv 。 所以我做到了
searchInput.addEventListener('focusout',function(e) {
resultsDiv.style.display = 'none';
});
问题在于,每个结果上的事件 click 都不再起作用,因为当我单击结果div时,我不再关注 searchInput ,因此隐藏了searchInput,未调用函数 chooseResult ...
我需要聚焦,因为如果我没有聚焦,即使选择其他字段, resultsDiv 仍然可见。
有人知道该怎么做吗?还是解决方法? 谢谢
编辑
我找到了解决方法。在对焦点事件进行设置时,设置了一个超时,该超时稍后会调用一个隐藏resultDiv的函数,因此事件单击就有时间发生。
searchInput.addEventListener('focusout',function(e) {
setTimeout(hideResultsDiv,150);
});
function hideResultsDiv() {
resultsDiv.style.display = 'none';
}
在我看来,这有点棘手,但确实可以。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)