用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 相关文章推荐
随窗体滑动的小插件sticky源码
Jun 21 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
Nov 29 Javascript
JS实现网页滚动条感应鼠标变色的方法
Feb 26 Javascript
javascript实现当前页导航激活的方法
Feb 27 Javascript
js判断手机端(Android手机还是iPhone手机)
Jul 22 Javascript
js实现仿Discuz文本框弹出层效果
Aug 13 Javascript
JS实现slide文字框缩放伸展效果代码
Nov 05 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
Vue过滤器的用法和自定义过滤器使用
Feb 08 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
jquery选择器和属性对象的操作实例分析
Jan 10 jQuery
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
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
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
小程序转发探索示例
2019/02/19 Javascript
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
用Python逐行分析文件方法
2019/01/28 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python3 实现口罩抽签的功能
2020/03/11 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
餐厅经理岗位职责范本
2014/02/17 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
党员自我剖析材料
2014/08/31 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
教师听课学习心得体会
2016/01/15 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle