>  기사  >  웹 프론트엔드  >  jquery는 이메일 자동 완성 기능 예제를 구현합니다.

jquery는 이메일 자동 완성 기능 예제를 구현합니다.

WBOY
WBOY원래의
2016-05-16 16:59:401081검색

코드 복사 코드는 다음과 같습니다.

(function($){
    $.fn.autoMail = function(options){
        var autoMail = $(this);
        var _value   = '';
        var _index   = -1;
        var _width   = autoMail.outerWidth();
        var _height  = autoMail.outerHeight();
        _left    = autoMail.offset().left; var _top     = 자동메일 .offset().top;
        autoMail.defaults = {
            deValue : '请输入邮箱地址',
            textCls : 'text-gray',
            listCls : 'list -메일',
            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()){        $(이것) .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.vals())
                    autoMail.val(autoMail.vars.deValue).addClass(autoMail.vars.textCls)
              }
            })
            //文本域键盘松开事件
            autoMail.keyup(event){
               if($(autoMail.list).length == 0){           autoMail.add() ;
               }
               if(autoMail.list.length > 0){
                 var keyCode = event.keyCode
                  //경고(keyCode)
                    스위치(keyCode){
사례 13:
                          autoMail.remove();
                       autoMail.blur();  break;
                      사례 38:
                       _index--;
                        if(_index < 0)
                             _index = 0
                      }
                         autoMail.keyOperate(_index) ;
                         휴식
                    사례 40:
                     _index ;                    if(_index > $('.item ',autoMail.list).length - 1){
                               _index = ('.item',autoMail.list).length - 1
                         }
                            autoMail.keyOperate(_index);
                            break;
                        default:
                            if(autoMail.val().indexOf('@') < 0){
_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 < autoMail.vars.mailArr.length; i++){
li += '
  • '+ '' + '@' + autoMail.vars.mailArr[i] + '' + '
  • ';
                }
                autoMail.list = $('
      '+ li +'
    ');
                autoMail.list.css({
                   '위치' : '절대',
                   '왼쪽'     : _왼쪽,
                   '상단'      _ top _height autoMail.vars.listTop,
                    'min -width': _width
                })
                autoMail.list.appendTo($('body'));
               //邮箱列表绑정사件
                autoMail.list.find('.item').click(function(event){
                   autoMail.getVal($(this))
                    자동메일.
                    event.stopPropagation();
               })
               autoMail.list.find('.item').hover(
                   function(){ $(this).add 클래스(' hover');
                   function(){ $(this).removeClass('hover') }
               )
                return autoMail.list;
            }
            //序列化列表
            autoMail.order = function(_value){
                $('.name',autoMail.list).remove();
                var name = $('' _value '');
                $('.item',autoMail.list).prepend(이름);
            }
            //添加列表
            autoMail.add = function(){
                if(typeof autoMail.list == 'undefine' || autoMail.list.length < 1) autoMail.create ();
           }
            //移除列表
            autoMail.remove = function(){
                if(autoMail.list.length > 0){
                   autoMail .list.remove();
                    autoMail.list 삭제; } }
    // 获取值 automail.getVal = function (obj) { if ($ ( '. name', obj) .text ()! = '' ') {
                    var selectValue = obj.text();
                    autoMail.val(selectValue);  
                }else{
                    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').autoMail( );
                                                                       }
    body{font-family: "Microsoft Yahei"; 글꼴 크기: 12px;}
    ul{목록 스타일: 없음;}
    입력{ 너비 : 180px; 줄 높이: 16px; 여백: 4px; 글꼴 크기: 12px; }
    .list- 메일 ul{ 테두리: 1px 솔리드 #aaa; line-heihgt: 24px; }
    .list-mail li{ 커서: 포인터: 2px 3px; 목록-메일 .name{ 색상: #982114; }
    .list-mail .hover{ 배경: #fefacf; }
    .list-mail .select{ 배경: #dedaae; style>


      

       



    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.