用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 相关文章推荐
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
Feb 23 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
Node.js测试中的Mock文件系统详解
Nov 21 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
Mar 01 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
原生Vue 实现右键菜单组件功能
Dec 16 Javascript
Node.js 中判断一个文件是否存在
Aug 24 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
javascript中new关键字详解
2015/12/14 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
C#微信小程序服务端获取用户解密信息实例代码
2017/03/10 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
Python中的sort()方法使用基础教程
2017/01/08 Python
python 处理dataframe中的时间字段方法
2018/04/10 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
django数据库自动重连的方法实例
2019/07/21 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
给同事的道歉信
2014/01/11 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
婚庆答谢词
2015/01/04 职场文书
教师个人师德总结
2015/02/06 职场文书
英文自荐信范文
2015/03/25 职场文书