位置:海鸟网 > IT > JavaScript >

js自动完成autoComplete

  花了点时间改写了一个autoComplete.js,在之前的项目里用jQuery写的一个函数,现在改成原生js面向对象的方式写,花了不少力气当然也从中学习到了很多,下面发出来分享。

  这个autoComplete对象需要初始化并绑定在一个input上面,面向对象的思想是借鉴上一篇随笔里面的日历控件。

  首先定义了该对象的一些属性:

autoComplete={

        source是数据源,这里写的几个静态数据测试,需要的话可以通过ajax动态取数据回来然后再绑定对象,这块暂时留着以后再来完善。

        接下来是初始化程序,主要是在页面里构建一个div提示,里面的数据在keyup事件再添加进去,并且返回这个对象便于之后绑定对象;

        然后就是bind方法,这个方法主要绑定这个input对象,使他具有autoComplete对象,并且绑定了键盘up和down键值可以上下翻滚并选中,代码有注释,也比较简单。

  

  然后是setDom方法,主要功能是在初始化时就在页面构建弹出层以及为了在ie6下挡住select元素而加的iframe,当时写这个方法直接把定位也在这里写了,结果发现绑定多个input的时候就会出问题,后来把弹出层定位放倒inset方法里。

最后是insert方法,用来匹配数据,如果有匹配到的数据就定位弹出层,显示。

使用方法:autoComplete.init().bind('input对象')

  对于js高手来说这样的效果基本都不值得一提,但对于我这样jQuery用的多的人来说写原生js还是比较费力,当时项目里用的方法用jQuery写只花了半天不到,但写这个却用了差不多两天的时间,感叹自己的基础知识还是非常的薄弱啊,继续加油吧!