用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 相关文章推荐
js右键菜单效果代码
Jul 21 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
jquery动画1.加载指示器
Aug 24 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
javascript数组遍历for与for in区别详解
Dec 04 Javascript
JS实现的仿QQ空间图片弹出效果代码
Feb 23 Javascript
JS实现的自定义水平滚动字体插件完整实例
Jun 17 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
利用D3.js实现最简单的柱状图示例代码
Dec 09 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 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
php下将XML转换为数组
2010/01/01 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
javascript常用的方法分享
2015/07/01 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
Python中转换角度为弧度的radians()方法
2015/05/18 Python
Python脚本实现Web漏洞扫描工具
2016/10/25 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
CSS伪类与CSS伪元素的区别及由来具体说明
2012/12/07 HTML / CSS
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
珍珠奶茶店创业计划书
2014/01/11 职场文书
年会活动策划方案
2014/01/23 职场文书
自主招生自荐信指南
2014/02/04 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
保研推荐信格式
2015/03/25 职场文书
经典祝酒词大全
2015/08/12 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python