码迷,mamicode.com
首页 > Web开发 > 详细

jQuery邮箱自动补全代码

时间:2016-08-22 00:05:06      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

JScript 代码   复制
技术分享
(function($){
技术分享    $.fn.emailMatch= function(settings){
技术分享        var defaultSettings = {
技术分享            emailTip:"请输入邮箱地址",
技术分享            aEmail: ["163.com", "qq.com", "gmail.com", "126.com", "hotmail.com", "yahoo.com", "yahoo.com.cn", "live.com", "sohu.com", "sina.com"], //邮件数组
技术分享            wrapLayer:"body",
技术分享            className:"mailListBox",
技术分享            emailRemember:true,
技术分享            autoCursor:false,
技术分享            position:"bottom" // bottom, left , right
技术分享        };
技术分享        /* 合并默认参数和用户自定义参数 */
技术分享        settings = settings ? $.extend(defaultSettings,settings):defaultSettings;
技术分享        return this.each(function(){
技术分享            var elem = $(this),t=0,l=0,
技术分享            w = elem.outerWidth(), 
技术分享            h = elem.outerHeight(),
技术分享            selectVal = sMail = inputVal = "",arrayNum = 0,
技术分享            isIndex = -1;
技术分享            
技术分享            t = elem.position().top;
技术分享            l = elem.position().left;
技术分享            
技术分享            var mailWrap = document.createElement("div");
技术分享            $(mailWrap).attr({"id":elem.attr("id"),"class":settings.className})
技术分享            $(settings.wrapLayer).append(mailWrap);
技术分享            if($.trim(elem.val()) == ""){elem.val(settings.emailTip);};
技术分享            elem.focus(function(){
技术分享                arrayNum = 0;
技术分享                if($.trim(elem.val()) == settings.emailTip){elem.val(‘‘);}; // 清空 输入框 提示内容
技术分享                if($.trim(elem.val()) !=""){
技术分享                    inputVal = $.trim(elem.val());
技术分享                    isIndex = inputVal.indexOf("@");
技术分享                    if(isIndex >= 0 ){
技术分享                        sMail = inputVal.substr(isIndex + 1);
技术分享                        inputVal = inputVal.substring(0,isIndex);
技术分享                        if(sMail !=""){
技术分享                            arrayNum = parseInt(!position(settings.aEmail,sMail)?0:position(settings.aEmail,sMail));
技术分享                        }
技术分享                    }
技术分享                    if(settings.autoCursor){
技术分享                        elem.val(inputVal);
技术分享                        if($.browser.msie ){
技术分享                            setCaretAtEnd(elem.attr("id"));
技术分享                        }
技术分享                    }
技术分享                    showList($(mailWrap),w,h,t,l);
技术分享                    createMailList(mailWrap,inputVal,sMail,settings.aEmail,arrayNum);
技术分享                };
技术分享            }).blur(function(){
技术分享                if(elem.val() == ‘‘){
技术分享                    elem.val(settings.emailTip);
技术分享                    hideList($(mailWrap));
技术分享                    return false;
技术分享                }; // 还原 输入框 提示内容
技术分享                enterVal(mailWrap,elem);
技术分享                hideList($(mailWrap));
技术分享            });
技术分享            elem.keyup(function(e){
技术分享                var suffixArray = [], eKey = e && (e.which || e.keyCode);
技术分享                //console.log(eKey);
技术分享                switch(eKey){
技术分享                    case 9: // tab 按键
技术分享                        return;
技术分享                        break;
技术分享                    case 13: { // 回车 
技术分享                            enterVal(mailWrap,elem);
技术分享                            hideList($(mailWrap));
技术分享                    }break;
技术分享                    case 38:{ // 方向键 上
技术分享                        showList($(mailWrap),w,h,t,l);
技术分享                        cursorMove(mailWrap,-1);
技术分享                    }break;
技术分享                    case 40: {// 方向键 下
技术分享                        showList($(mailWrap),w,h,t,l);
技术分享                        cursorMove(mailWrap,+1);
技术分享                    }break;
技术分享                    default:{
技术分享                            inputVal = $.trim(elem.val());
技术分享                        var    keyIndex = inputVal.indexOf("@");
技术分享                        var suffix = "",suffixState = true;        
技术分享                        if(keyIndex >= 0){
技术分享                            suffix = inputVal.substr(keyIndex + 1);
技术分享                            inputVal = inputVal.substring(0,keyIndex);
技术分享                            $("#t2").text("BBB" + inputVal);
技术分享                            if(suffix != ‘‘ && settings.emailRemember){ // 过滤数组
技术分享                                for (var i = 0; i < settings.aEmail.length; i++) {
技术分享                                    if (settings.aEmail[i].indexOf(suffix) == 0) {
技术分享                                        suffixArray.push(settings.aEmail[i]);
技术分享                                        suffixState = false;
技术分享                                    }
技术分享                                }                
技术分享                            }
技术分享                            if(suffix != ‘‘ && !settings.emailRemember){ // 当前高亮 选项 
技术分享                                for (var i = 0; i < settings.aEmail.length; i++) {
技术分享                                    if (settings.aEmail[i].indexOf(suffix) == 0) {
技术分享                                        arrayNum = i;
技术分享                                        suffixState = false;
技术分享                                        break;
技术分享                                    }
技术分享                                }
技术分享                            }
技术分享                        }
技术分享                        
技术分享                        suffixArray = suffixArray.length > 0 ? suffixArray:settings.aEmail;
技术分享                        if(inputVal=="" && suffix == ""){
技术分享                            hideList($(mailWrap));
技术分享                            arrayNum = 0;
技术分享                            createMailList(mailWrap,inputVal,suffix,settings.aEmail,arrayNum);
技术分享                        }else{
技术分享                            showList($(mailWrap),w,h,t,l);
技术分享                            createMailList(mailWrap,inputVal,suffix,suffixArray,arrayNum);
技术分享                        }
技术分享                    }
技术分享                }
技术分享                
技术分享            });
技术分享            
技术分享            $(mailWrap).find("li:not(‘.first‘)").live(‘mouseover‘,function(){
技术分享                $(this).addClass("hover").siblings().removeClass("hover"); 
技术分享            });
技术分享            $(mailWrap).find("li:not(‘.first‘)").live(‘mousedown‘,function(){
技术分享                $(this).addClass("current").siblings().removeClass("current");
技术分享                enterVal(mailWrap,elem);
技术分享                hideList($(mailWrap));
技术分享            });
技术分享            $(mailWrap).bind("mouseout",function(){
技术分享                $(mailWrap).find("li:not(‘.first‘)").removeClass("hover");
技术分享            });
技术分享        });
技术分享    };
技术分享    
技术分享    function cursorMove(o,n){
技术分享        var cursorList = $(o).find("li:not(‘.first‘)"),k = new Number();
技术分享        for(i=0;i<cursorList.length;i++){
技术分享            if(cursorList[i].className == "current"){
技术分享                k = i+n
技术分享                cursorList[i].className = "";
技术分享            };
技术分享        }
技术分享        if(k < 0) k =0;
技术分享        if(k >= cursorList.length - 1 ) k = cursorList.length - 1;
技术分享        cursorList[k].className = "current";
技术分享    }
技术分享    
技术分享    function setCaretAtEnd(field){ // IE 系列浏览器 在自动光标跳回文档首问题
技术分享        var b = document.getElementById(field);
技术分享        if (b.createTextRange){
技术分享            var r = b.createTextRange(); 
技术分享            r.moveStart(‘character‘,  b.value.length); 
技术分享            r.collapse(); 
技术分享            r.select();
技术分享        } 
技术分享    }
技术分享    
技术分享    function position(array,value){  // 取得 元素在数组中的位置
技术分享        for(var i in array){
技术分享            if(array[i]==value){
技术分享                return i;break;
技术分享            }
技术分享        }
技术分享    };    
技术分享    function enterVal(oWrap,elem){
技术分享        elem.val($(oWrap).find("li.current").text()); // 获取高亮内容 到 输入框
技术分享    };
技术分享    
技术分享    function showList(oElem,w,h,t,l){ // 显示 邮箱框架 并定位.
技术分享        oElem.css({"display":"block","top":h + t,"left":l,"width":w-2});
技术分享    };
技术分享    
技术分享    function hideList(oElem){ // 显示 邮箱框架 
技术分享        oElem.css({"display":"none"});
技术分享    };
技术分享    
技术分享    function createMailList(oWrap,sVal,suffix,aEail,nK){ // 创建 候选列表
技术分享        if(nK < 0 ) {nK = 0;}
技术分享        if(nK > aEail.length-1) {nK = aEail.length - 1;}
技术分享        var mailList = "<li class=‘first‘><span>请选择邮箱类型</span></li>";
技术分享        var State = true; // 用户键入 后缀 是否匹配候选后缀 的状态
技术分享        
技术分享        for(k=0; k<aEail.length;k++){
技术分享            if(suffix!= ‘‘ && aEail[k].indexOf(suffix) == 0){
技术分享                State = false;
技术分享            }
技术分享        }
技术分享        
技术分享        nK = parseInt(suffix!= ‘‘ && State && !position(aEail,suffix)?0:nK);
技术分享        
技术分享        if(suffix !=‘‘ && State ){
技术分享            if(nK == 0){
技术分享                mailList += ‘<li class="current"><span>‘+sVal+‘</span>@‘+suffix+‘</li>‘;
技术分享            } else {
技术分享                mailList += ‘<li><span>‘+sVal+‘</span>@‘+suffix+‘</li>‘;
技术分享            }
技术分享        }
技术分享        if($.isArray(aEail)){
技术分享            $.each(aEail, function(i){
技术分享                if(State && suffix !=‘‘){
技术分享                    if(i == (nK-1) ){
技术分享                        mailList += ‘<li class="current"><span>‘+sVal+‘</span>@‘+aEail[i]+‘</li>‘;    
技术分享                    } else {
技术分享                        mailList += ‘<li><span>‘+sVal+‘</span>@‘+aEail[i]+‘</li>‘;    
技术分享                    }
技术分享                } else{
技术分享                    if(i == nK){
技术分享                        mailList += ‘<li class="current"><span>‘+sVal+‘</span>@‘+aEail[i]+‘</li>‘;    
技术分享                    } else {
技术分享                        mailList += ‘<li><span>‘+sVal+‘</span>@‘+aEail[i]+‘</li>‘;    
技术分享                    }
技术分享                }
技术分享            });
技术分享        }
技术分享        mailList = "<ul>" + mailList + "</ul>";
技术分享        $(oWrap).html(mailList);
技术分享    };
技术分享})(jQuery);



HTML 代码   复制
技术分享技术分享
<div class="f_item">
技术分享
     <label class="i_label">邮箱:</label>
技术分享
     <input type="text" class="i_text" id="txtLoginID" name="txtLoginID" style="color: rgb(153, 153, 153);">
技术分享
     <div id="txtLoginIDTip">
技术分享
     </div>
技术分享
</div>
技术分享
<script>
   $("#txtLoginID").emailMatch();
技术分享</script>
 

jQuery邮箱自动补全代码

标签:

原文地址:http://www.cnblogs.com/sharing1986687846/p/5784393.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!