AJAX即时搜索的修改

时间:2012-08-02 12:42:44

标签: php javascript mysql html ajax

我使用this教程使用AJAX构建即时搜索,我得到了即时结果,但问题是结果在那里保持打开的div。

我想在获得即时结果之后修改它,然后

  1. 在页面的任何位置点击时,结果(div)应该消失。
  2. 当输入字段结果(div)再次鼠标悬停时,应重新出现。
  3. AJAX代码

        <script type="text/javascript">
    function showResult(str)
    {
    if (str.length==0)
      {
      document.getElementById("search-result").innerHTML="";
      document.getElementById("search-result").style.border="0px";
      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("search-result").innerHTML=xmlhttp.responseText;
        document.getElementById("search-result").style.border="1px solid #A5ACB2";
        }
      }
    xmlhttp.open("GET","instant-search.php?keyword="+str,true);
    xmlhttp.send();
    }
    </script>
    

    HTML代码

        <div id="search">
    <form action="" method="get" id="search-form" >
    
    <input name="" type="" size="" id="search-input" onkeydown="showResult(this.value)"/>
    
    <select name="" id="search-select">
    <option value="all" >All</option>
    <input type="hidden" name="" value="" />
    </select>
    
    <input type="submit" value="Search" id="search-btn" /> 
    
    </form>      
    </div>
    <div id="search-result"></div>
    

    PHP代码是简单的MySQL全文搜索查询。

    我尝试添加此功能但没有任何反应

            <input name="keyword" type="text" size="50" id="search-input" onkeydown="showResult(this.value)" onclick="(this.value==this.defaultValue) this.value='';"  onmouseout="showResult(this.value='';)"/>
    

    请建议任何方式。

    感谢。

2 个答案:

答案 0 :(得分:1)

令人讨厌的方式

<body>
<div id="main" onclick="fx(0)">

<div id="search">
<form action="" method="get" id="search-form" >
<input name="" type="" size="" id="search-input" onkeydown="showResult(this.value)"/>
<select name="" id="search-select">
<option value="all" >All</option>
<input type="hidden" name="" value="" />
</select>
<input type="submit" value="Search" id="search-btn" /> 
</form>      
</div>
<div id="search-result" onclick="fx(1)"></div>

</div>
</body>

<script>
function fx(var flag)
{
  // document.getElementById(theIdYouWantToShowHide).style.display="none" or inline or block ...
}
</script>

答案 1 :(得分:0)

终于明白了,希望这对其他人也有帮助。

 <script type="text/javascript">
function showResult(str)
{
if (str.length==0)
  {
  document.getElementById("search-result").innerHTML="";
  document.getElementById("search-result").style.border="0px";
  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("search-result").innerHTML=xmlhttp.responseText;
    document.getElementById("search-result").style.border="1px solid #A5ACB2";
    document.getElementById("search-result").style.display="block";
    document.getElementById("search-input").onmouseover = function(){show_box()};
    }
  }
xmlhttp.open("GET","instant-search.php?keyword="+str,true);
xmlhttp.send();
}

function close_box(){
document.getElementById("search-result").style.display="none";
}
 function show_box(){
    document.getElementById("search-result").style.display="block";
}

document.onclick = function(){close_box()};

</script>