ajax模仿google输入字符提示功能

google输入字符然后下拉提示的功能
首先我总体的简介一下,我只用了两个文件了,因为是测试所以就不分那么清楚了,把js文件和html写在一个文件test.html里面了,还有一个就是php文件post.php了,这个文件用来处理ajax发送过来的数进行处理,再由ajax把数据返回给test.html里面的div, 原理不这么简单了,下面我们来看代码.
第一步创建数据表:test
      CREATE TABLE `test` (
    `id` int(4) NOT NULL auto_increment,
    `title` varchar(50) default NULL,
     PRIMARY KEY  (`id`)
     ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=5 ;
好了数据库创建成功了我们就来建立test.html文件,这个文件很简单,就是一个表单和一个div和CSS
<style>
<!--
body{font-size:12px;}
#show{border:1px solid #9abcde; line-height:23px; width:200px; margin:0px;}
#show li{list-style:none;}
#sug{margin:0px auto;}
-->
</style>
上面为CSS了就是用来控制效果的,
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
  <form name="form1" method="post" action=""><tr>
    <td>
      <input name="key" type="text" id="key" onFocus="other();" onKeyDown="sugguest();"  onBlur="losefouse();"  size="27" autocomplete=off >
      <input type="submit" name="Submit" value="111cn搜索">
    </td>
  </tr></form>
  <tr>
    <td><div id="sug" onClick="javascript:func();"></div></td>
  </tr>
</table>
这上面为内容了,关于函数我们下面来具体的说明.
第二步:就是js和xmlhttp的处理和调用了.
创建xmlhttp,这个函数我上次讲ajax+php模仿window文件管理器时讲过了,在用户注册也讲过了,这里不不说了,具体地址请到:

var xmlHttp = false;
function ajaxcreate(){
try {xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
  xmlHttp = false;
}
}
if (!xmlHttp && typeof XMLHttpRequest != \\\'undefined\\\') {
  xmlHttp = new XMLHttpRequest();
}
if(!xmlHttp){alert(\\\'Create Xmlhttp Fail \\\');return false;}
}
下面这个函数sugguest()作用是取得key的值并发送给post文件进行处理,再调用returnstate()函数
function sugguest(){
ajaxcreate();
var xmvalue=document.getElementById("key").value;
var url="post.php?key="+encodeURI(xmvalue)+"rnd="+Math.random();
if (xmvalue== null || xmvalue.length>20 || xmvalue == "") return false;
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(xmvalue);
xmlHttp.onreadystatechange=returnstate;
}
下面returnstate()函数是判断xmlhttp的状态是否等4,4表示发送成功,其实还一个200表示接收完毕
function returnstate(){
if(xmlHttp.readyState != 4 ){
  document.getElementById("sug").innerHTML="plase wait....";
}
if(xmlHttp.readyState == 4 ){
  document.getElementById("sug").innerHTML=xmlHttp.responseText;
}
}
后面这些函数就是一些基本的处理我就不讲了,
function fillin(str){
document.getElementById(\\\'key\\\').value=str;
obj =document.getElementById(\\\'sug\\\');
obj.innerHTML=\\\'\\\';
obj.style.display=\\\'none\\\';
}
function other(){
document.getElementById(\\\'sug\\\').style.display=\\\'block\\\';
}
function losefouse(){
setInterval("func()",4000);
var time=setInterval("func()",1000);  
clearTimeout(time);
}
function func(){
  ob=document.getElementById(\\\'sug\\\');
    ob.style.display = \\\'none\\\';  
}
最后面就是post.php文件了,接着下一篇了.


最新评论及回复

1 Responses to “ajax模仿google输入字符提示功能”

  • 1. seo on 2008-9-26 9:16:46

    好 支持 写的不错

发表评论




◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。