十分钟打造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 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
半角全角相互转换的js函数
Oct 16 Javascript
JS获取浏览器版本及名称实现函数
Apr 02 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
微信小程序仿知乎实现评论留言功能
Nov 28 Javascript
JavaScript页面加载事件实例讲解
Sep 01 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
详解node和ES6的模块导出与导入
Feb 19 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 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
超强分页类2.0发布,支持自定义风格,默认4种显示模式
2007/01/02 PHP
解决cPanel无法安装php5.2.17
2014/06/22 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
利用“多说”制作留言板、评论系统
2015/07/14 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
laypage.js分页插件使用方法详解
2019/07/27 Javascript
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python中作用域的深入讲解
2018/12/10 Python
在python中画正态分布图像的实例
2019/07/08 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python定时器线程池原理详解
2020/02/26 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
酒店led欢迎词
2014/01/09 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
Python代码实现双链表
2022/05/25 Python