2012-03-14 57 views
1

我正在玩W3Schools網站上的Ajax Live Search功能。它運行良好,除了我希望結果div #livesearch在用戶點擊遠離時再次隱藏。我找到了一個代碼片段,但是我無法成功將這兩個代碼合併。如果我添加代碼,當用戶點擊時搜索結果可以隱藏,但用戶必須先點擊才能看到它們,這顯然不會起作用。隱藏結果,W3Schools PHP示例AJAX Live Search

http://www.w3schools.com/php/php_ajax_livesearch.asp http://bytes.com/topic/javascript/answers/676788-hide-div-tag-if-outside-div-clicked

任何人都可以點我在正確的方向?

感謝

克里斯

+0

感謝您的幫助。 (document).click(function(e){e.target).attr('id'); if(elem!==''livesearch '){('#livesearch')。fadeOut('fast'); } }); – user1098178 2012-03-14 20:57:12

回答

0

結帳的JavaScript '的onblur' 事件。

您可以創建其清除DIV一個新功能:

blurFunction() { 
document.getElementById("livesearch").innerHTML = '' 
} 

onblur事件:

<input type="text" size="30" onkeyup="showResult(this.value)" onblur="blurFunction()" /> 

編輯:其實我只注意到了showResult功能已經迎合清除DIV,所以只需插入:

<input type="text" size="30" onkeyup="showResult(this.value)" onblur="showResult('')" /> 
+0

我認爲OP希望隱藏整個div,並讓它重新出現在事件上,而不是清除innerHTML文本。但我可能會讀錯。 – 2012-03-14 18:31:26

+0

嗨史蒂夫。 onblur showResult函數可正常工作,並在您單擊時隱藏結果div,但它具有使結果塊內部的鏈接也不可點擊的不幸結果。有沒有解決的辦法?謝謝 – user1098178 2012-03-14 19:29:18

+0

感謝您的幫助。 (document).click(function(e){e.target).attr('id'); if(elem!==''livesearch '){('#livesearch')。fadeOut('fast'); } }); – user1098178 2012-03-14 20:45:14

0

如果我正在閱讀此權限,您希望將下拉菜單放置到disa ppear當輸入失去焦點並重新出現時,鼠標移動它,不只是點擊?

我可以通過使用onblur事件來隱藏盒子(我相信你發現的例子同樣適用)。 onblur="hide(this)"隱藏下拉格。隱藏JS功能是一樣的:function hide(id) { document.getElementById("livesearch").style.display = "none"; }

要讓它重新出現在鼠標懸停,我添加了一個onmousemove事件輸入:<input type="text" size="30" onkeyup="showResult(this.value)" onblur="hide(this)" onmousemove="showResult(this.value)" />

最重要我在xmlhttp.onreadystatechange=function()加入這一行document.getElementById("livesearch").style.display = "block";使DIV重新出現。