0

そのため、その下に次のような結果を表示する小さな検索バーを作成しています。

<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'>は、クリックされた以外の結果が表示されないようにすることです。ありがとう!

4

2 に答える 2

0

ドキュメントにリスナーを追加します(addEventListenerを使用)-JSFiddleの例

<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の使用を検討してください。これにより作業がはるかに楽になります。

于 2011-06-08T07:18:17.387 に答える
0

これは最適化されていないが機能している非jQueryソリューションです

<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をクリックすると切り替えます

 var hide= (id !="searchWrapper" && id!="Search" && id != "inputSpn" && id != "searchBtn" && id != "Results");
document.getElementById("Results").style.display=(hide)?"none":"block";
于 2011-06-08T07:26:43.663 に答える