十分钟打造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实现多选项切换导航菜单的方法
Feb 06 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 Javascript
基于javascript实现随机颜色变化效果
Jan 14 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
整理一些最近经常遇到的前端面试题
Apr 25 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 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
人族 TERRAN 概述
2020/03/14 星际争霸
PHP程序员的技术成长规划
2016/03/25 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
vue 弹出遮罩层样式实例
2020/07/22 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
公安四风对照检查材料思想汇报
2014/10/11 职场文书
单位考核鉴定意见
2015/06/05 职场文书
初中团委工作总结
2015/08/13 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
工作简历的自我评价
2019/05/16 职场文书
css背景和边框标签实例详解
2021/05/21 HTML / CSS
SQL写法--行行比较
2021/08/23 SQL Server