当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 十分钟打造AutoComplete自动完成效果代码

Javascript
JavaScript 仿歌词效果
javascript 网页上跳动的文字
jquery 屏蔽一个区域内的所有元素,禁止输入
VBScript 实现文字遮罩
用按钮触发Javascript动态生成一个表格的代码
文字瞬间从左到右切换显示的JavaScript代码
jquery 插件开发方法小结
JS 操作日期 顺便实现 上一周 和 下一周 功能
struts2 jquery 打造无限层次的树
js文件中调用js的实现方法小结
写入cookie的JavaScript代码库 cookieLibrary.js
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
javascript Keycode对照表
JavaScript 动态添加表格行 使用模板、标记
JS window.opener返回父页面的应用
JavaScript 高仿真可控弹簧振子实现代码
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
JavaScript 图片放大效果及代码说明
js 操作符实例代码
JavaScript 文本域字体大小选择功能

Javascript 中的 十分钟打造AutoComplete自动完成效果代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 172 ::
收藏到网摘: n/a

十分钟打造山寨版谷歌AutoComplete,因为是十分钟打造出来的,所以只考虑表面效果,其他全部忽略,绝对的山寨。 .老生常谈---XmlHttpRequest
代码
复制代码 代码如下:

var xmlHttp;
function createXmlHttpRequest()
{
if(window.ActieveXObject)
{
xmlHttp=new ActieveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}

如果不用Jquery手写javascript,上面要改成XmlHttpRequest对象池,这就不写了。
.触发AutoComplete函数
代码
复制代码 代码如下:

function $E(argument)
{
return document.getElementById(argument);
}
function GetInfo(e)
{
var input=$E("Text1").value;
if(input.length<=0)
{
changeDisplay();
}
else
{
createXmlHttpRequest();
var keyword=e.value;
xmlHttp.onreadystatechange=readyStateChangeHandle;
var url="AutoComplete.ashx?keyword="+keyword+"&timeStamp="+new Date().getTime();
xmlHttp.open("GET",url,true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
xmlHttp.send(null);
}
}

这里服务器后台是在.NET平台下的xxx.ashx一般处理程序响应客户端得请求,当然也可以用webserviece或者aspx.cs或WCF来响应客户端得请求,但是需要注意的是webservice响应客户端必须遵循遵循soap协议(当然也可以通过修改配置文件让webservice响应get或post请求),xxx.ashx和aspx.cs响应客户端要遵循http协议。当然后台也可以PHP或JAVA等。
.鼠标move变色
复制代码 代码如下:

function changecolor(event)
{
event.style.background="#00FFFF";
}
function changebackcolor(event)
{
event.style.background="#FFFFFF"
}

.选区隐藏与出现
代码
复制代码 代码如下:

function ChangeDivDisplay(e)
{
document.getElementById("Text1").value=e.firstChild.data;
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}
function changeDisplay()
{
var html="";
document.getElementById("searchResult").innerHTML=html;
document.getElementById("searchResult").style.visibility="hidden";
}

.回调函数
代码
复制代码 代码如下:

function readyStateChangeHandle()
{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
if(xmlHttp.responseText!="]")
{
var resultDiv=$E("searchResult");
var josnStr=eval('('+xmlHttp.responseText+')');
var html="";
for (var key in josnStr)
{
html+= "<span onmousemove=\"changecolor(this)\" onclick=\"ChangeDivDisplay(this)\" onmouseout=\"changebackcolor(this)\" style=\"width: 195px; text-align: left; background-color: #FFFFFF; display: block; cursor: default;\">"+josnStr[key].bookName +"<span style=\" color: #008000; float: right;\">"+josnStr[key].bookCount+"本书</span></span>";
}
html+= "<span style=\" width: 195px; background-color: #FFFFFF; display: block;\"><a href=\"javascript:changeDisplay()\" style=\"float: right;\">关闭</a></span>";
resultDiv.innerHTML=html;
document.getElementById("searchResult").style.visibility="visible";
}
else
{
changeDisplay();
}
}
}
}

这里我用的是json,当然也可以用XML或者字符串。