十分钟打造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 相关文章推荐
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
JSQL 基于客户端的成绩统计实现方法
May 05 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
Nov 25 Javascript
jquery如何把数组变为字符串传到服务端并处理
Apr 30 Javascript
javascript实现连续赋值
Aug 10 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
jquery插入兄弟节点的操作方法
Dec 07 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
Bootstrap实现的标签页内容切换显示效果示例
May 25 Javascript
vue axios post发送复杂对象问题
Jun 04 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 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
php项目打包方法
2008/02/18 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
javascript String 对象
2008/04/25 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
node实现爬虫的几种简易方式
2019/08/22 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python SMTP实现发送带附件电子邮件
2018/05/22 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
2019/01/29 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
家庭户外服装:Hawkshead
2017/11/02 全球购物
新闻专业应届生求职信
2013/10/31 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
超市开学活动方案
2014/03/01 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
认真学习保证书
2015/02/26 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis
python区块链实现简版工作量证明
2022/05/25 Python