用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 UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
jQuery点击弹出下拉菜单的小例子
Aug 01 Javascript
js+canvas简单绘制圆圈的方法
Jan 28 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
JS获取html元素的标记名实现方法
Oct 08 Javascript
关于jQuery库冲突的完美解决办法
May 20 jQuery
基于openlayers4实现点的扩散效果
Aug 17 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
Vue项目配置跨域访问和代理proxy设置方式
Sep 08 Javascript
electron踩坑之remote of undefined的解决
Oct 06 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 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
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
js自定义回调函数
2015/12/13 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
django如何实现视图重定向
2019/07/24 Python
python虚拟环境完美部署教程
2019/08/06 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
深入浅析python的第三方库pandas
2020/02/13 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
车间核算员岗位职责
2014/07/01 职场文书
多人股份制合作协议书
2016/03/19 职场文书