用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 相关文章推荐
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
Oct 31 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
Jun 17 Javascript
JS Testing Properties 判断属性是否在对象里的方法
Oct 01 Javascript
vue购物车插件编写代码
Nov 27 Javascript
微信小程序视图控件与bindtap之间的问题的解决
Apr 08 Javascript
vue 实现 rem 布局或vw 布局的方法
Nov 13 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 Javascript
JS面向对象实现飞机大战
Aug 26 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
最新Javascript程序员面试试题和解题方法
2017/11/23 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
Python的mysql数据库的更新如何实现
2017/07/31 Python
python 将md5转为16字节的方法
2018/05/29 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
python实现简易淘宝购物
2019/11/22 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
沙龙级头发造型工具:FOXYBAE
2018/07/01 全球购物
出国留学经济担保书
2014/04/01 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
运动会演讲稿
2014/05/07 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
财务统计员岗位职责
2015/04/14 职场文书
通知格式
2015/04/27 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
2016年元旦致辞
2015/08/01 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
python如何为list实现find方法
2022/05/30 Python