十分钟打造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 相关文章推荐
jQuery 性能优化指南(3)
May 21 Javascript
js实现一个省市区三级联动选择框代码分享
Mar 06 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
详解javascript中的事件处理
Nov 06 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
js中scrollTop()方法和scroll()方法用法示例
Oct 03 Javascript
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
Angular2 http jsonp的实例详解
Aug 31 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 Javascript
vue实现折线图 可按时间查询
Aug 21 Javascript
Vue用mixin合并重复代码的实现
Nov 27 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实现网站插件机制的方法
2009/11/10 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
Nodejs如何复制文件
2016/03/09 NodeJs
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
vue页面切换过渡transition效果
2018/10/08 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
Python实现CET查分的方法
2015/03/10 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
python矩阵的转置和逆转实例
2018/12/12 Python
python实现学员管理系统
2019/02/26 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Html5 localStorage入门教程
2018/04/26 HTML / CSS
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
竞选班干部演讲稿300字
2014/08/20 职场文书
尊师重教演讲稿
2014/09/04 职场文书
庆七一宣传标语
2014/10/08 职场文书
玄武湖导游词
2015/02/05 职场文书
初中运动会前导词
2015/07/20 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
使用Pytorch训练two-head网络的操作
2021/05/28 Python
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
Java线程的6种状态与生命周期
2022/05/11 Java/Android