十分钟打造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中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
May 25 Javascript
关于JavaScript与HTML的交互事件
Apr 12 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
Mar 19 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 Javascript
解决await在forEach中不起作用的问题
Feb 25 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
JAVA/JSP学习系列之四
2006/10/09 PHP
最省空间的计数器
2006/10/09 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
jQuery textarea的长度进行验证
2009/05/06 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python模块之paramiko实例代码
2018/01/31 Python
对Python中创建进程的两种方式以及进程池详解
2019/01/14 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
Python分布式进程中你会遇到的问题解析
2019/05/28 Python
Python获取数据库数据并保存在excel表格中的方法
2019/06/12 Python
python getopt模块使用实例解析
2019/12/18 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
电气工程师岗位职责
2014/01/01 职场文书
十佳教师事迹材料
2014/01/11 职场文书
单位人事专员介绍信
2014/01/11 职场文书
旷课检讨书2000字
2014/01/14 职场文书
总经理任命书
2014/03/29 职场文书
股东合作协议书范本
2014/04/14 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
匿名信格式范文
2015/05/27 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang