<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>suggest.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<style type="text/css">
body {
font: 11px arial;
}.suggest_link {
background-color: #FFFFFF;
padding: 2px 6px 2px 6px;
}.suggest_link_over {
background-color: #E8F2FE;
padding: 2px 6px 2px 6px;
}#suggest {
position: abslute;
background-color: #FFFFFF;
text-align: left;
border: 1px solid #000000;
display: none;
}
</style>
<script language="javascript">
var xmlhttp;//声明浏览器初始化对象变量
function searchSuggest(){
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
try{
xmhttp=new XMLHttpRequest();
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
}catch(e){}
}
}
//判断XMLHttpRequest对象是否成功创建
if(!xmlhttp){
alert("不能创建XMLHttpRequest对象实例");
return false;
}
//创建请求结果处理程序
xmlhttp.onreadystatechange=processReuqest;
var str = document.getElementById("txtSearch").value;
xmlhttp.open("get","SearchSuggest?search="+str,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-type","text/html;charset=utf-8");
xmlhttp.send(null);
}
function processReuqest(){
if(xmlhttp.readyState==4){
   if(xmlhttp.status==200){
var sobj=document.getElementById("suggest");
sobj.innerHTML="";
var str= xmlhttp.responseText.split("-");
var suggest="";
if(str.length>0&&str[0].length>0){
for(i=0;i<str.length;i++){
suggest+="<div onmouseover='javascript:suggestOver(this);'";
suggest+=" onmouseout='javascript:suggestOut(this);'";
suggest+=" onclick='javascript:setSearch(this.innerHTML);'";
suggest+=" class='suggest_link'>"+str[i]+"</div>";
}
sobj.innerHTML=suggest;
document.getElementById("suggest").style.display="block";
}else{
document.getElementById("suggest").style.display="none";
}
   }
}
}
function suggestOver(obj){
obj.className = "suggest_link_over";
}
function suggestOut(obj){
obj.className="suggest_link";
}

</script>
</head> <body>
<h3>
Ajax实现搜索提示
</h3>
<div style="width: 500px">
<form action="" id="formSearch">
<input type="text" id="txtSearch" name="txtSearch" onkeyup="searchSuggest()" autocomplete="off" />
<input type="submit" id="cmdSearch" name="cmdSearch" value="搜索" />
</br>
<div id="suggest" style="width: 200px"></div>
</form>
</div>
</body>
</html>

解决方案 »

  1.   

    用jquery框架做,在输入的文本框里添加一个keypress事件,然后用jqurey发ajax请求就好了。这个功能我以前做过
      

  2.   

    js做的太累赘了,建议使用jquery,很多网站有那种功能你可以参考下,jquery实现很简单的。
      

  3.   

    <%@page pageEncoding="utf-8"%>
    <html>
    <head>
    <script type="text/javascript" src="../jquery-1.4.3.js"></script>
    <script type="text/javascript">
    function autoComplete() {

    var xhr = new XMLHttpRequest();
    var url='/ajaxsample/servlet/complete?item='+document.getElementById('content').value;
    xhr.open('get',url,true);
    xhr.onreadystatechange=function(){
    if(xhr.readyState==4) {
    var json = xhr.responseText;
    // JSON --> Javascript Object
    var items = eval("("+json+")");
    clearItems();
    fillItems(items);
    }
    };
    xhr.send(null);
    }


    function fillItems(items) {
    for(var i=0;i<items.length;i++) {
    var tb = document.getElementById('items');
    var tr = tb.insertRow(0);
    var td = tr.insertCell(0);

    td.onmouseover=function(){
    this.style.backgroundColor='#3333ff';
    this.style.color='#ffffff';
    }

    td.onmouseout=function(){
    this.style.backgroundColor='#ffffff';
    this.style.color='#000000';
    }

    td.onclick=function() {
    var content = document.getElementById('content');
    content.value = this.innerHTML;
    document.getElementById("items_div").style.display="none";
    }

    td.innerHTML = items[i];
    }
    document.getElementById("items_div").style.display="";
    }

    function clearItems() {
    var tb = document.getElementById('items');
    for(var i=tb.rows.length-2;i>=0;i--) {
        //
    tb.deleteRow(i);
    }
    }
    </script>
    </head>
    <body>
    <h1>
    自动搜索
    </h1>
    <input type="text" name="content" id="content" style="width:200px"
    onkeypress="setTimeout(function(){autoComplete();},20)" /><br>
    <div id="items_div"
    style="position: absolute;border:1px solid;left: 10px;border-top:0px;width:190px;display:none">
    <table id="items" width="100%">
    <tr>
    <td align="right">
    <a href="javascript:;" onclick="document.getElementById('items_div').style.display='none';">关闭</a>
    </td>
    </tr>
    </table>
    </div>
    </body>
    </html> 
     
     
     我电脑里只找到AJAX的源码,你可以偿试着改成jqurey也行的