用js实现输入提示(自动完成)的实例代码


Posted in Javascript onJune 14, 2013
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>autoComplete</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
.autoComplete {margin:8px;position:relative;float:left;}
.autoComplete input {width:200px;height:25px;margin:0;padding:0;line-height:25px;}
.autoComplete ul {z-index:-12;padding:0px;margin:0px;border:1px #333 solid;width:200px;background:white;display:none;position:absolute;left:0;top:28px;*margin-left:9px;*margin-top:2px;margin-top:1px;}
.autoComplete li {list-style:none;}
.autoComplete li a {display:block;color:#000;text-decoration:none;padding:1px 0 1px 5px;_width:97%;}
.autoComplete li a:hover {color:#000;background:#ccc;border:none;}
</style>
<script type="text/javascript">
//<![CDATA[
var getElementsByClassName = function (searchClass, node, tag) {/* 兼容各浏览器的选择class的方法;(:https://3water.com,想了解更多请看这个地址) */
    node = node || document, tag = tag ? tag.toUpperCase() : "*";
    if(document.getElementsByClassName){/* 支持getElementsByClassName的浏览器 */
        var temp = node.getElementsByClassName(searchClass);
        if(tag=="*"){
            return temp;
        } else {
            var ret = new Array();
            for(var i=0; i<temp.length; i++)
                if(temp[i].nodeName==tag)
                    ret.push(temp[i]);
            return ret;
        }
    }else{/* 不支持getElementsByClassName的浏览器 */
        var classes = searchClass.split(" "),
            elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),
            patterns = [], returnElements = [], current, match;
        var i = classes.length;
        while(--i >= 0)
            patterns.push(new RegExp("(^|s)" + classes[i] + "(s|$)"));
        var j = elements.length;
        while(--j >= 0){
            current = elements[j], match = false;
            for(var k=0, kl=patterns.length; k<kl; k++){
                match = patterns[k].test(current.className);
                if(!match) break;
            }
            if(match) returnElements.push(current);
        }
        return returnElements;
    }
};
var addEvent=(function(){/* 用此函数添加事件防止事件覆盖 */
    if(document.addEventListener){
        return function(type, fn){ this.addEventListener(type, fn, false); };
    }else if(document.attachEvent){
        return function(type,fn){
            this.attachEvent(on+type, function () {
                return fn.call(this, window.event);/* 兼容IE */
            });
        };
    }
})();
;(function(window){
/* 插件开始 */
var autoComplete=function(o){
    var handler=(function(){
        var handler=function(e,o){ return new handler.prototype.init(e,o); };/* 为每个选择的dom都创建一个相对应的对象,这样选择多个dom时可以很方便地使用 */
        handler.prototype={
            e:null, o:null, timer:null, show:0, input:null, popup:null,
            init:function(e,o){/* 设置初始对象 */
                this.e=e, this.o=o,
                this.input=this.e.getElementsByTagName(this.o.input)[0],
                this.popup=this.e.getElementsByTagName(this.o.popup)[0],
                this.initEvent();/* 初始化各种事件 */
            },
            match:function(quickExpr,value,source){/* 生成提示 */
                var li = null;
                for(var i in source){
                    if( value.length>0 && quickExpr.exec(source[i])!=null ){
                        li = document.createElement(li);
                        li.innerHTML = <a href="javascript:;">+source[i]+</a>;
                        this.popup.appendChild(li);
                    }
                }
                if(this.popup.getElementsByTagName(a).length)
                    this.popup.style.display=block;
                else
                    this.popup.style.display=none;
            },
         &n
Javascript 相关文章推荐
js 日期转换成中文格式的函数
Jul 07 Javascript
IE 下的只读 innerHTML
Aug 21 Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
Mar 03 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
使用JavaScript刷新网页的方法
Jun 04 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
理解JavaScript原型链
Oct 25 Javascript
express如何使用session与cookie的方法
Jan 30 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 Javascript
JS removeAttribute()方法实现删除元素的某个属性
Jan 11 Javascript
jsp+javascript打造级连菜单的实例代码
Jun 14 #Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 #Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 #Javascript
JQuery 操作/获取table具体代码
Jun 13 #Javascript
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 #Javascript
如何使Chrome控制台支持多行js模式——意外发现
Jun 13 #Javascript
jQuery插件的写法分享
Jun 12 #Javascript
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
php curl选项列表(超详细)
2013/07/01 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
微信小程序缓存过期时间的使用详情
2019/05/12 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python验证码识别的方法
2015/07/10 Python
Python计算字符宽度的方法
2016/06/14 Python
Python 多进程和数据传递的理解
2017/10/09 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
浅析python标准库中的glob
2020/03/13 Python
会计电算化专业应届大学生求职信
2013/10/22 职场文书
电气技术员岗位职责
2013/11/19 职场文书
自我鉴定怎么写
2014/01/12 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
建筑工地宣传标语
2014/06/18 职场文书
委托书的写法
2014/09/16 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
师德标兵事迹材料
2014/12/19 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书