用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 DOM节点添加示例
Jul 16 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
Nov 26 Javascript
js中遍历Map对象的方法
Jul 27 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
Angularjs中使用轮播图指令swiper
May 30 Javascript
JavaScript中Object值合并方法详解
Dec 22 Javascript
js实现每日签到功能
Nov 29 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 Javascript
node后端服务保活的实现
Nov 10 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 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
文件上传类
2006/10/09 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
2016/05/12 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
几个javascript操作word的参考代码
2009/10/26 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
2011/07/31 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
在AngularJS中如何使用谷歌地图把当前位置显示出来
2016/01/25 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
vue点击页面空白处实现保存功能
2019/11/06 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
详解Python locals()的陷阱
2019/03/26 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
大学生个人先进事迹材料范文
2014/05/03 职场文书
白血病募捐倡议书
2014/05/14 职场文书
音乐教师求职信
2014/06/28 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
超级礼物观后感
2015/06/15 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
python 算法题——快乐数的多种解法
2021/05/27 Python