十分钟打造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 相关文章推荐
JS实现遮罩层效果的简单实例
Nov 12 Javascript
JavaScript中的console.log()函数详细介绍
Dec 29 Javascript
推荐4个原生javascript常用的函数
Jan 12 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
Angularjs 设置全局变量的方法总结
Oct 20 Javascript
Node 自动化部署的方法
Oct 17 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
vue+eslint+vscode配置教程
Aug 09 Javascript
Vue实现数据请求拦截
Oct 23 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
vue中this.$http.post()跨域和请求参数丢失的解决
Apr 08 Vue.js
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的配置文件php.ini
2006/10/09 PHP
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
php强制更新图片缓存的方法
2015/02/11 PHP
php检测文本的编码
2015/07/26 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
jQuery 遍历json数组的实现代码
2020/09/22 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python使用百度翻译进行中翻英示例
2014/04/14 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
Python内建模块struct实例详解
2018/02/02 Python
Python 类的特殊成员解析
2018/06/20 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
CSS3 Flexbox中flex-shrink属性的用法示例介绍
2013/12/30 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
安全教育心得体会
2013/12/29 职场文书
触摸春天教学反思
2014/02/03 职场文书
拓展策划方案
2014/06/03 职场文书
邓小平理论心得体会
2014/09/09 职场文书
员工保密协议书
2014/09/27 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android
利用Redis实现点赞功能的示例代码
2022/06/28 Redis