我有一个搜索框,它的第一个开始是一个放大镜图标。单击 ( :focus
) 时,它会展开到您可以输入的搜索框。
我的一个朋友帮我写了一个 jQuery 代码,当用户开始在搜索字段中输入时,结果会立即显示在它下面(来自我的 mySQL 数据库),您可以单击它来查看结果。
但是,如果您单击搜索字段,并且 CSS 不再设置为:focus
jQuery(让我们调用它们)快速结果,那么显然不要消失 - 因为没有任何东西告诉他们。
我的问题是 - 我怎样才能让它们在搜索框打开时显示并在搜索框不:focus
打开时消失。
这是搜索栏的 CSS:
.search_bar input[type="text"] {
position: absolute;
right: 0px;
top: -18px;
padding: 0 0 0 22px;
width: 30px;
height: 54px;
-webkit-transition: width 0.5s ease-in-out;
}
.search_bar input[type="text"]:focus{
width: 550px;
outline: none;
}
这是 jQuery 结果的 CSS(它们生成的空间:
#searchResult {
position: absolute;
z-index: 1;
width: 536px;
right: 20px;
top: 40px;
text-align: left;
}
这是jQuery:
jQuery(document).ready(function()
{
jQuery('#search_bar').keyup(db_search);
});
function db_search()
{
var searchFor = jQuery('#search_bar').val();
if (searchFor=="")
{
document.getElementById("searchResult").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("searchResult").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","php/searchFor.php?search="+searchFor,true);
xmlhttp.send();
}
如果不清楚,这里有一些静止图像来说明我的问题。
我试图用这个 CSS 来隐藏它:
.search_bar input[type="text"]:focus + #searchResult {
display: block;
}
到display: block
何时:focus
在搜索栏上。
#searchResult {
position: absolute;
z-index: 1;
width: 536px;
right: 20px;
top: 40px;
text-align: left;
display: none;
}
:focus
当它不在搜索栏上时隐藏整个 div 及其内容。
但这不起作用,我不知道该怎么做,我对 jQuery/javascript 的了解仍然非常有限,所以如果答案就在于此,是否有人愿意分享答案? 我试图研究 jQuery 中的 hide() 函数,但我不知道将它放在哪里,我认为它会在 if 语句中?
抱歉问了一个很长的问题,我试图尽可能清晰和彻底。