十分钟打造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 打印内容方法小结
Nov 04 Javascript
在javascript中实现函数数组的方法
Dec 25 Javascript
Angularjs手动解析表达式($parse)
Oct 12 Javascript
jQuery中Nicescroll滚动条插件的用法
Nov 10 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
基于vue1和vue2获取dom元素的方法
Mar 17 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 Javascript
微信小程序webview实现长按点击识别二维码功能示例
Jan 24 Javascript
ES6 Iterator接口和for...of循环用法分析
Jul 31 Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 Javascript
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
如何用JavaScript检测当前浏览器是无头浏览器
Apr 27 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对象转换为数组函数(递归方法)
2012/02/04 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
判断一个变量是数组Array类型的方法
2013/09/16 Javascript
用javascript对一个json数组深度赋值示例
2014/07/27 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
Bootstrap的图片轮播示例代码
2015/08/31 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
python如何制作英文字典
2019/06/25 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
高清屏下canvas重置尺寸引发的问题的解决
2019/10/14 HTML / CSS
Python如何定义一个函数
2015/09/01 面试题
优秀员工个人的自我评价
2013/11/29 职场文书
学校介绍信范文
2014/01/14 职场文书
社团活动总结
2014/04/28 职场文书
治超工作实施方案
2014/05/04 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
总结Python变量的相关知识
2021/06/28 Python
oracle索引总结
2021/09/25 Oracle
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技