Home > Web Front-end > JS Tutorial > body text

jquery实现邮箱自动补全功能示例分享_jquery

WBOY
Release: 2016-05-16 16:59:40
Original
983 people have browsed it

复制代码 代码如下:

(function($){
    $.fn.autoMail = function(options){
        var autoMail = $(this);
        var _value   = '';
        var _index   = -1;
        var _width   = autoMail.outerWidth();
        var _height  = autoMail.outerHeight();
        var _left    = autoMail.offset().left;
        var _top     = autoMail.offset().top;
        autoMail.defaults = {
            deValue : '请输入邮箱地址',
            textCls : 'text-gray',
            listCls : 'list-mail',
            listTop : 1,
            mailArr  : ["qq.com","gmail.com","126.com","163.com","hotmail.com","yahoo.com","yahoo.com.cn","live.com","sohu.com","sina.com"]
        }
        //初始化
        autoMail.init = function(){
            autoMail.vars = $.extend({},autoMail.defaults,options);
            autoMail.val(autoMail.vars.deValue).addClass(autoMail.vars.textCls);
            autoMail.click(function(event){
                autoMail.select().removeClass(autoMail.vars.textCls);
                if(autoMail.val() != autoMail.vars.deValue){
                    autoMail.add();
                    autoMail.order(_value);
                    autoMail.list.find('.item').each(function(){
                        if($(this).text() == autoMail.val()){
                            $(this).siblings('.item').removeClass('select');
                            $(this).addClass('select');
                            return false;
                        }
                    })
                }
                event.stopPropagation();
            })
            autoMail.blur(function(event){
                if(autoMail.val() == '' || autoMail.val() == autoMail.vars.deValue){
                    alert(autoMail.val())
                    autoMail.val(autoMail.vars.deValue).addClass(autoMail.vars.textCls);
                }
            })
            //文本域键盘松开事件
            autoMail.keyup(function(event){
                if($(autoMail.list).length == 0){
                    autoMail.add();
                }
                if(autoMail.list.length > 0){
                    var keyCode = event.keyCode;
                    //alert(keyCode)
                    switch(keyCode){
                        case 13:
                            autoMail.remove();
                            autoMail.blur();
                            break;
                        case 38:
                            _index--;
                            if(_index                                 _index = 0;
                            }
                            autoMail.keyOperate(_index);
                            break;
                        case 40:
                            _index++;
                            if(_index > $('.item',autoMail.list).length - 1){
                                _index = ('.item',autoMail.list).length - 1
                            }
                            autoMail.keyOperate(_index);
                            break;
                        default:
                            if(autoMail.val().indexOf('@')                                 _value = autoMail.val();
                                autoMail.order(_value);     
                            }    
                    }  
                }
            })
            $(document).click(function(){
                if($(autoMail.list).length > 0){
                    autoMail.remove();
                    autoMail.blur();
                }
            })
        }
        //创建列表
        autoMail.create = function(){
            var li = '';
            for(var i = 0; i                 li += '
  • '+ '' + '@' + autoMail.vars.mailArr[i] + '' + '
  • ';
                }
                autoMail.list = $('
      '+ li +'
    ');
                autoMail.list.css({
                    'position' : 'absolute',
                    'left'     : _left,
                    'top'      : _top + _height + autoMail.vars.listTop,
                    'min-width': _width
                })
                autoMail.list.appendTo($('body'));
                //邮箱列表绑定事件
                autoMail.list.find('.item').click(function(event){
                    autoMail.getVal($(this));
                    autoMail.remove();
                    event.stopPropagation();
                })
                autoMail.list.find('.item').hover(
                    function(){ $(this).addClass('hover'); },
                    function(){ $(this).removeClass('hover'); }
                )
                return autoMail.list;
            }
            //序列化列表
            autoMail.order = function(_value){
                $('.name',autoMail.list).remove();
                var name = $(''+ _value +'');
                $('.item',autoMail.list).prepend(name);
            }
            //添加列表
            autoMail.add = function(){
                if(typeof autoMail.list == 'undefined' || autoMail.list.length         }
            //移除列表
            autoMail.remove = function(){
                if(autoMail.list.length > 0){
                    autoMail.list.remove();
                    delete autoMail.list;
                }
            }
            //获取值
            autoMail.getVal = function(obj){
                if($('.name',obj).text() != ''){
                    var selectValue = obj.text();
                    autoMail.val(selectValue);  
                }else{
                    return false;
                }
            }
            //键盘操作
            autoMail.keyOperate = function(_index){
                $('.item',autoMail.list).eq(_index).addClass('hover').siblings('.item').removeClass('hover');
                autoMail.val($('.item',autoMail.list).eq(_index).text());
            }
            //开始初始话动作...
            autoMail.init();
        }
    })(jQuery)

    复制代码 代码如下:



       
           
            无标题文档
           
           
           
           
       
       
           

           
       

    Related labels:
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!