十分钟打造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 相关文章推荐
javaScript parseInt字符转化为数字函数使用小结
Nov 05 Javascript
类似GMAIL的Ajax信息反馈显示
Feb 16 Javascript
js Date自定义函数 延迟脚本执行
Mar 10 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
Jun 14 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
Dec 25 Javascript
JS短路原理的应用示例 精简代码的途径
Dec 13 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 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 - Html Transfer Code
2006/10/09 PHP
PHP操作xml代码
2010/06/17 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
Python中基础的socket编程实战攻略
2016/06/01 Python
python计算两个数的百分比方法
2018/06/29 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
python 制作磁力搜索工具
2021/03/04 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
英国领先的亚洲旅游专家:Wendy Wu Tours
2018/01/21 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
公司董事长职责
2013/12/12 职场文书
文体活动总结范文
2014/05/05 职场文书
担保书范文
2019/07/09 职场文书
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server
MySQL多表查询机制
2022/03/17 MySQL
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers