首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript onfocus / onblur问题

Javascript onfocus / onblur问题
EN

Stack Overflow用户
提问于 2011-06-08 15:14:16
回答 2查看 846关注 0票数 0

所以我做了一个小搜索栏,在它下面显示结果如下:

代码语言:javascript
复制
<div id='searchWrapper'>
  <div id='Search'>
    <input id="inputSpn" type="input" value="" />
    <input id="searchBtn" type="image" src="/search.png" />
    <br clear='all'/>
  </div>
  <div id='Results'>
  </div>
</div>

我基本上是通过AJAX做一个生活搜索。<div id='Results'>最初是隐藏的,直到您键入并填充一些结果。然而,我的问题是当用户点击离开时让它隐藏起来。让它在onblur中消失也不起作用,因为我需要能够点击结果,而不是让它们消失在我身上。不幸的是,我还没能在互联网上找到一个好的非jQuery方法。最简单的说法是:如果单击了<div id='searchWrapper'>以外的任何内容,我都希望结果消失。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-08 15:26:44

下面是一个非优化但有效的非jQuery解决方案

代码语言:javascript
复制
<script>
document.onclick=function(e) {
  var elem = e?e.target:event.srcElement;
  var id = elem.id;
  document.getElementById("inputSpn").value=id+" clicked"; // debug - remove when happy
  // the following could be done by looping over the searchWrapper and its children
  if (id !="searchWrapper" && id!="Search" && id != "inputSpn" && id != "searchBtn" && id != "Results") {
    document.getElementById("Results").style.display="none"
  }
}
</script>
<div id='searchWrapper'>
  <div id='Search'>
    <input id="inputSpn" type="input" value="" />
    <input id="searchBtn" type="image" src="TekTP/icons/search.png" />
    <br clear='all'/>
  </div>
  <div id='Results'>hello
  </div>
</div>

更新:

在包装器div上单击时切换

代码语言:javascript
复制
 var hide= (id !="searchWrapper" && id!="Search" && id != "inputSpn" && id != "searchBtn" && id != "Results");
document.getElementById("Results").style.display=(hide)?"none":"block";
票数 0
EN

Stack Overflow用户

发布于 2011-06-08 15:18:17

向文档添加监听器(使用addEventListener) - JSFiddle Example

代码语言:javascript
复制
<style>
#Results {
     display: none;   
}
</style>

<script type="text/javascript">
window.onload = function(){
    document.addEventListener('click', function(event){
        if(document.getElementById('searchBtn') != (event.target) ? event.target : event.srcElement) {
            document.getElementById('Results').style.display = 'none';
        } else {
            document.getElementById('Results').style.display = 'block';
        }
    });
};
</script>

<div id='searchWrapper'>
    <div id='Search'>
        <input id="inputSpn" type="input" value="" />
        <input id="searchBtn" type="button" value="Search"/>
        <br clear='all'/>
    </div>
    <div id='Results'></div>
</div>

但是如果你打算在你的网站中使用大量的Javascript,你可以考虑使用jQuery -它会让你的生活变得更容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6275359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档