jQuery邮箱自动补全代码

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

jQuery邮箱自动补全代码

     <label class="i_label">邮箱:</label>

jQuery邮箱自动补全代码

     <input type="text" class="i_text" id="txtLoginID" name="txtLoginID" style="color: rgb(153, 153, 153);">

jQuery邮箱自动补全代码

     <div id="txtLoginIDTip">

jQuery邮箱自动补全代码

     </div>

jQuery邮箱自动补全代码

</div>

jQuery邮箱自动补全代码

<script>
$("#txtLoginID").emailMatch();
jQuery邮箱自动补全代码</script>