用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 相关文章推荐
在textarea中屏蔽js的某个function的javascript代码
Apr 20 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
Javascript基础教程之switch语句
Jan 18 Javascript
7个有用的jQuery代码片段分享
May 19 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
vue.js实现含搜索的多种复选框(附源码)
Mar 23 Javascript
详解用webpack2.0构建vue2.0超详细精简版
Apr 05 Javascript
Vue 2中ref属性的使用方法及注意事项
Jun 12 Javascript
js根据json数据中的某一个属性来给数据分组的方法
Oct 08 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
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
javascript实现表单验证
2016/01/29 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
基于pip install django失败时的解决方法
2018/06/12 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
django 中使用DateTime常用的时间查询方式
2019/12/03 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
python实现企业微信定时发送文本消息的示例代码
2020/11/24 Python
政法学院毕业生求职信
2014/02/28 职场文书
关于读书的活动方案
2014/08/14 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
nginx实现动静分离的方法示例
2021/11/07 Servers