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


Posted in Javascript onDecember 26, 2009

.老生常谈---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或者字符串。
Javascript 相关文章推荐
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
js压缩利器
Feb 20 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
ExtJs使用总结(非常详细)
Mar 22 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
javascript实现文件拖拽事件
Mar 29 Javascript
vue实现的请求服务器端API接口示例
May 25 Javascript
vue实现商城秒杀倒计时功能
Dec 12 Javascript
Vue SSR 即时编译技术的实现
May 06 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 Javascript
React实现动效弹窗组件
Jun 21 Javascript
jQuery 常见开发使用技巧总结
Dec 26 #Javascript
javascript 最常用的10个自定义函数[推荐]
Dec 26 #Javascript
默认让页面的第一个控件选中的javascript代码
Dec 26 #Javascript
js tab效果的实现代码
Dec 26 #Javascript
javascript 计算两个整数的百分比值
Dec 26 #Javascript
用Javascript同时提交多个Web表单的方法
Dec 26 #Javascript
再谈javascript 动态添加样式规则 W3C校检
Dec 25 #Javascript
You might like
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
function, new function, new Function之间的区别
2007/03/08 Javascript
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
利用JS实现数字增长
2016/07/28 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
python备份文件的脚本
2008/08/11 Python
python计算时间差的方法
2015/05/20 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
flask中过滤器的使用详解
2018/08/01 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
softmax及python实现过程解析
2019/09/30 Python
捷克钓鱼用品网上商店:Parys.cz
2018/06/15 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
配件采购员岗位职责
2013/12/03 职场文书
实习生的自我评价
2014/01/08 职场文书
自我评价的范文
2014/02/02 职场文书
员工安全承诺书
2014/05/22 职场文书
机械专业求职信
2014/05/25 职场文书
三问三解心得体会
2014/09/05 职场文书
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android