用javascript模仿ie的自动完成类似自动完成功的表单


Posted in Javascript onDecember 12, 2012

最近在写一个javascript框架,看见网上有不少自动完成功能的表单,所以一时兴起,用javascript写了一个,为自己的框架增点色.

步骤:
1.传入两个参数,第一个是你要绑定的表单对象,第二个是你要检索的数组.
2.动态建立一个div做为你要自动完成的层,设置属性和事件(我在这里并没有设置div的visible和display属性,而是将它的left设为"-1000px",这样就移出了浏览器之外,达到了隐藏的效果.
3.对传入的数组进行检索,找出与输入内容匹配或相近的项,并将其存入一个新的数组.这里用正则表达式进行了四次迭代,写的不好,还望见谅.
4.对存入检索后数据的那个新数组进行处理,去掉内容重复的项,并将其写进div内.
5.设置div的left,top,width即可.

下面看给出的完整代码:

if(!sx) 
var sx={}; 
sx.activex={}; 
sx.activex.autocomplete={ 
bind:function(a,s){ 
var d=document.createElement("div"); 
d.style.position="absolute"; 
d.flag="autocomplete"; 
document.body.appendChild(d); 
d.style.left="-1000px"; 
d.style.height="100px"; 
d.style.overflow="auto"; 
a.onblur=function(){ 
if(document.elementFromPoint(window.event.clientX,window.event.clientY).flag=="autocomplete" || document.elementFromPoint(window.event.clientX,window.event.clientY).parentNode.flag=="autocomplete") 
return; 
d.innerHTML=""; 
d.style.left="-1000px"; 
} 
a.onkeyup=function(){ 
if(a.value=="") { 
d.innerHTML=""; 
return; 
} 
d.innerHTML=""; 
var t=[]; 
for(var i in s){ 
if(eval("/^"+a.value+"$/i").test(s[i])){ 
t.push(s[i]); 
} 
} 
for(var i in s){ 
if(eval("/^"+a.value+".+$/i").test(s[i])){ 
t.push(s[i]); 
} 
} 
for(var i in s){ 
if(eval("/^.+"+a.value+"$/i").test(s[i])){ 
t.push(s[i]); 
} 
} 
for(var i in s){ 
if(eval("/^.+"+a.value+".+$/i").test(s[i])){ 
t.push(s[i]); 
} 
} 
for(var e=0;e<=t.length-2;e++){ 
for(var e1=e+1;e1<=t.length-1;e1++){ 
if(t[e]==t[e1]){ 
for(var e2=e1+1;e2<t.length;e2++){ 
if(t[e2]){ 
t[e2-1]=t[e2]; 
} 
} 
t.length=t.length-1; 
} 
} 
} 
//alert(t); 
for(var i in t){ 
var p=document.createElement("div"); 
p.innerText=t[i]; 
p.onmouseenter=function(){ 
this.style.backgroundColor="blue"; 
} 
p.onmouseleave=function(){ 
this.style.backgroundColor="white"; 
} 
p.onclick=function(){ 
a.value=this.innerText; 
d.style.left="-1000px"; 
} 
d.appendChild(p) 
} 
d.style.top=a.offsetTop+a.offsetHeight+"px"; 
d.style.left=a.offsetLeft+"px"; 
d.style.width=a.offsetWidth+"px"; 
} 
} 
}.

调用的html代码:
<html> 
<head> 
<title>Untitled Document</title> 
</head> 
<body> 
<script src="kongjian.js"></script> 
<input type="text" size="15" id="a"> 
<input type="text" size="15" id="a1"> 
<script> 
sx.activex.autocomplete.bind(document.getElementById("a"),["asd","a","sad","er","ewrew","aadasd","wqqwrqw","asasf","qweqw"]); 
sx.activex.autocomplete.bind(document.getElementById("a1"),["asd","a","sad","er","ewrew","aadasd","wqqwrqw","asasf","qweqw"]); 
</script> 
</body> 
</html>

代码没有优化,还请多多包涵,这里给出一个思路,让各位见笑了.
Javascript 相关文章推荐
两个select之间option的互相添加操作(jquery实现)
Nov 12 Javascript
document.getElementById获取控件对象为空的解决方法
Nov 20 Javascript
详解JavaScript的流程控制语句
Nov 30 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
Knockoutjs 学习系列(二)花式捆绑
Jun 07 Javascript
如何学JavaScript?前辈的经验之谈
Dec 28 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
详解用node搭建简单的静态资源管理器
Aug 09 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
javascript实现图片切换的幻灯片效果源代码
Dec 12 #Javascript
javascript跑马灯悬停放大效果实现代码
Dec 12 #Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
Dec 12 #Javascript
javascript采用数组实现tab菜单切换效果
Dec 12 #Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 #Javascript
日历查询的算法 如何计算某一天是星期几
Dec 12 #Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 #Javascript
You might like
神族 Protoss 剧情介绍
2020/03/14 星际争霸
聊天室php&amp;mysql(三)
2006/10/09 PHP
smarty简单入门实例
2014/11/28 PHP
php类自动加载器实现方法
2015/07/28 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
js导出txt示例代码
2014/01/14 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Pytorch中.new()的作用详解
2020/02/18 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
python实现猜拳游戏项目
2020/11/30 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
红旗方阵解说词
2014/02/12 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
教师三严三实心得体会
2014/10/11 职场文书
小石潭记导游词
2015/02/03 职场文书
《所见》教学反思
2016/02/23 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
Python合并pdf文件的工具
2021/07/01 Python