当前位置:  编程技术>jquery

Jquery自动完成插件(自写)

    来源: 互联网  发布时间:2014-09-03

    本文导语:  1、html测试代码:   代码示例: jQuery自动完成插件_www. .autoComplete {margin:8px;position:relative;float:left;} .autoComplete input{width:200px;height:25px;line-height:25px;margin:0;padding:0;} .autoComplete ul{z-index:99;padding:0px;margin:0px;border:1px #333 solid;w...

1、html测试代码:
 

代码示例:



jQuery自动完成插件_www.


.autoComplete {margin:8px;position:relative;float:left;}
.autoComplete input{width:200px;height:25px;line-height:25px;margin:0;padding:0;}
.autoComplete ul{z-index:99;padding:0px;margin:0px;border:1px #333 solid;width:200px;background:white;display:none;position:absolute;left:0;top:28px;}
.autoComplete li{list-style:none;}
.autoComplete li a {display:block;color:#000;text-decoration:none;padding:1px 0 1px 5px;}
.autoComplete li a:hover {color:#000;background:#ccc;border:none;}










2、jQuery插件的实现代码。
 

代码示例:
;(function($){
/* Plugin */
$.fn.autoComplete=function(o){
    if(o.ajax) o.ajax=$.extend({ url:'', dataType:'json', async:true }, o.ajax||{});
    o.elemCSS=$.extend({ focus:{'color':'#f00'}, blur:{'color':'#000'} }, o.elemCSS||{});
    o=$.extend({
        source:null,/* privide an array for match */
        ajax:{},/* provide an ajax conditions, if source is exist this parameter is invalid */
        input:'input',/* provide the selector of input box */
        popup:'ul',/* provide the selector of popup box, it must be a ul element of html */
        elemCSS:{}/* provide the focus and blur css objects of items in the popup box */
    },o||{});
 
    var handler=(function(){
        var handler=function(e,o){ return new handler.prototype.init(e,o); };
        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.o.input,this.e);
                this.$popup=$(this.o.popup,this.e);
                this.initEvent();
            },
            match:function(quickExpr,value,source){
                for(var i in source){
                    if( value.length>0 && quickExpr.exec(source[i])!=null )
                        this.$popup.append('
  • '+source[i]+'
  • ');
                    }
                    if($('li a',this.$popup[0]).length){ this.$popup.show(); }else{ this.$popup.hide(); }
                },
                fetch:function(ajax,search,quickExpr){
                    var that=this;
                    $.ajax({
                        url: ajax.url+search,
                        dataType: ajax.dataType,
                        async: ajax.async,
                        error: function(data,es,et){ alert('error'); },
                        success: function(data){ that.match(quickExpr,search,data); }
                    });
                },
                initEvent:function(){
                    var that=this;
                    this.$input.focus(function(){
                        var value=this.value, quickExpr=RegExp('^'+value,'i'), self=this;
                        that.timer=setInterval(function(){
                            if(value!=self.value){
                                value=self.value;
                                that.$popup.html('');
                                if(value!=''){
                                    quickExpr=RegExp('^'+value);
                                    if(that.o.source) that.match(quickExpr,value,that.o.source);
                                    else if(that.o.ajax) that.fetch(that.o.ajax,value,quickExpr);
                                }
                            }
                        },200);
                    }).blur(function(){
                        clearInterval(that.timer);
                        var current=-1;
                        var len=that.$popup.find("li a").length-1;
                        $("li a",that.$popup[0]).click(function(){
                            that.$input[0].value=$(this).text();
                            that.$popup.html('').hide();
                        }).focus(function(){
                            current = $(this).parent().index();
                            $(this).css(that.o.elemCSS.focus);
                        }).blur(function(){
                            $(this).css(that.o.elemCSS.blur);
                        });
                        $("li a",that.$popup[0]).keydown(function(event){
                            if(event.keyCode==40){
                                current++;
                                if(currentlen) current=0;
                                that.$popup.find("li a").get(current).focus();
                            }else if(event.keyCode==38){
                                current--;
                                if(current>len) current=0;
                                if(current

        
     
     

    您可能感兴趣的文章:

  • jquery插件jquery倒计时插件分享
  • jQuery图片轮换插件 jQuery Dynamic Slideshow
  • jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
  • jQuery 内容滑动插件 Basic jQuery Slider
  • jQuery圆角插件 jQuery Corners
  • jQuery右键菜单插件 jQuery ContextMenu
  • jQuery日历插件 jQuery Week Calendar
  • jQuery实现CSS3动画效果的插件 jQuery Transit
  • jQuery消息提醒插件 jQuery Notty
  • jQuery无限幻灯片插件 jQuery Carousel
  • jQuery多值输入插件 jQuery Manifest
  • jQuery向导插件 Jquery Wizard Plugin
  • jQuery相册插件 jQuery.popeye
  • jQuery的中文日历插件 jQuery.datePickerCn
  • jQuery的气泡提示插件 jquery.ns_bub.js
  • jQuery对话框插件 jquery.modalbox
  • jQuery的OpenSocial插件 OpenSocial jQuery
  • jQuery链接插件 jquery.biggerlink
  • 在线客服jQuery 插件 jQuery.onServ
  • jQuery日历插件 jQuery Verbose Calendar
  • jQuery自动完成插件 jQuery.autocomplete
  • jQuery 自动完成插件 jQuery completer
  • jQuery自动完成插件 jQuery AutoComplete
  • jQuery自动完成插件 jqac
  • jQuery输入自动完成 Combogrid
  • jQuery自动完成插件 Autobox2
  • jQuery的自动完成插件 Autocomplete
  • JQuery在页面加载完成时执行函数的示例代码
  • 在页面加载完成后通过jquery给多个span赋值
  • 页面加载完成后再执行JS的jquery写法以及区别说明
  • Jquery、Ajax、Struts2完成定时刷新的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 通过javascript库JQuery实现页面跳转功能代码
  • jQuery鼠标动画插件 jquery-ahover
  • jQuery概述,代码举例及最新版下载
  • jQuery UI组件 jQuery UI
  • Jquery操作html复选框checkbox:全选,全不选和反选
  • jQuery分页插件 Pagination jQuery Plugin
  • struts+spring+hibernate+jquery实现分页功能的几个基本类介绍(异步加载)
  • jQuery的CSV插件 jQuery CSV
  • jQuery气泡提示插件 jquery-rollover-tooltip
  • jQuery对话框 jQuery Modal Dialog
  • jQuery 插件 jQuery Ripples
  • 精简版的jQuery jQuery.ish
  • jQuery虚拟键盘 jQuery Keypad
  • jQuery滚动效果插件 jQuery.SerialScroll
  • jQuery电子表格插件 jQuery.sheet
  • jQuery日期选择插件 jQuery UI Datepicker
  • jQuery分页插件 jQuery Pagination
  • jQuery的OpenSocial插件 OpenSocial jQuery iis7站长之家
  • jQuery条形码插件 jQuery Barcode
  • jQuery 星级评分插件 jQuery Raty
  • jQuery动态背景插件 jQuery.spritely




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3