本文实例讲述了jQuery实现Email邮箱地址自动补全功能代码。分享给大家供大家参考,具体如下:
jQuery Email邮箱地址自动补全代码,输入Email时,会自动加入@符号,在输入框中输入“qq”、“Sina”、“163”等等可以看到效果;鼠标经过提示Email时,高亮该条Email,鼠标点击Email时,文本框内容替换成该条Email,并删除提示层.
运行效果截图如下:
在线演示地址如下:
http://demo.phpstudy.net/js/2015/jquery-email-auto-comp-codes/
具体代码如下:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <title>输入Email相关字符自动提示Email地址</title> <script src=\"jquery-1.6.2.min.js\" type=\"text/javascript\"></script> <style type=\"text/css\"> body { margin:0px; padding:0px; font-family:Arial; font-size:12px; padding:10px; } #myemail, .newemail, .newemailtitle{ cursor:default; line-height:18px; } </style> </head> <body> Email <input id=\"me\" type=\"text\" value=\"\" style=\"width:150px; height:18px; line-height:18px; border:1px solid #999;\"> <script type=\"text/javascript\"> var nowid; var totalid; var can1press = false; var emailafter; var emailbefor; $(document).ready(function(){ $(\"#me\").focus(function(){ //文本框获得焦点,插入Email提示层 $(\"#myemail\").remove(); $(this).after(\"<div id=\'myemail\' style=\'width:170px; height:auto; background:#fff; color:#6B6B6B; position:absolute; left:\"+$(this).get(0).offsetLeft+\"px; top:\"+($(this).get(0).offsetTop+$(this).height()+2)+\"px; border:1px solid #ccc;z-index:5px; \'></div>\"); if($(\"#myemail\").html()){ $(\"#myemail\").css(\"display\",\"block\"); $(\".newemail\").css(\"width\",$(\"#myemail\").width()); can1press = true; } else { $(\"#myemail\").css(\"display\",\"none\"); can1press = false; } }).keyup(function(){ //文本框输入文字时,显示Email提示层和常用Email var press = $(\"#me\").val(); if (press!=\"\" || press!=null){ var emailtxt = \"\"; var emailvar = new Array(\"@163.com\",\"@126.com\",\"@yahoo.com\",\"@qq.com\",\"@sina.com\",\"@gmail.com\",\"@hotmail.com\",\"@foxmail.com\"); totalid = emailvar.length; var emailmy = \"<div class=\'newemail\' style=\'width:170px; color:#6B6B6B; overflow:hidden;\'><font color=\'#D33022\'>\" + press + \"</font></div>\"; if(!(isEmail(press))){ for(var i=0; i<emailvar.length; i++) { emailtxt = emailtxt + \"<div class=\'newemail\' style=\'width:170px; color:#6B6B6B; overflow:hidden;\'><font color=\'#D33022\'>\" + press + \"</font>\" + emailvar[i] + \"</div>\" } } else { emailbefor = press.split(\"@\")[0]; emailafter = \"@\" + press.split(\"@\")[1]; for(var i=0; i<emailvar.length; i++) { var theemail = emailvar[i]; if(theemail.indexOf(emailafter) == 0) { emailtxt = emailtxt + \"<div class=\'newemail\' style=\'width:170px; color:#6B6B6B; overflow:hidden;\'><font color=\'#D33022\'>\" + emailbefor + \"</font>\" + emailvar[i] + \"</div>\" } } } $(\"#myemail\").html(emailmy+emailtxt); if($(\"#myemail\").html()){ $(\"#myemail\").css(\"display\",\"block\"); $(\".newemail\").css(\"width\",$(\"#myemail\").width()); can1press = true; } else { $(\"#myemail\").css(\"display\",\"none\"); can1press = false; } beforepress = press; } if (press==\"\" || press==null){ $(\"#myemail\").html(\"\"); $(\"#myemail\").css(\"display\",\"none\"); } }) $(document).click(function(){ //文本框失焦时删除层 if(can1press){ $(\"#myemail\").remove(); can1press = false; if($(\"#me\").focus()){ can1press = false; } } }) $(\".newemail\").live(\"mouseover\",function(){ //鼠标经过提示Email时,高亮该条Email $(\".newemail\").css(\"background\",\"#FFF\"); $(this).css(\"background\",\"#CACACA\"); $(this).focus(); nowid = $(this).index(); }).live(\"click\",function(){ //鼠标点击Email时,文本框内容替换成该条Email,并删除提示层 var newhtml = $(this).html(); newhtml = newhtml.replace(/<.*?>/g,\"\"); $(\"#me\").val(newhtml); $(\"#myemail\").remove(); }) $(document).bind(\"keydown\",function(e) { if(can1press){ switch(e.which) { case 38: if (nowid > 0){ $(\".newemail\").css(\"background\",\"#FFF\"); $(\".newemail\").eq(nowid).prev().css(\"background\",\"#CACACA\").focus(); nowid = nowid-1; } if(!nowid){ nowid = 0; $(\".newemail\").css(\"background\",\"#FFF\"); $(\".newemail\").eq(nowid).css(\"background\",\"#CACACA\"); $(\".newemail\").eq(nowid).focus(); } break; case 40: if (nowid < totalid){ $(\".newemail\").css(\"background\",\"#FFF\"); $(\".newemail\").eq(nowid).next().css(\"background\",\"#CACACA\").focus(); nowid = nowid+1; } if(!nowid){ nowid = 0; $(\".newemail\").css(\"background\",\"#FFF\"); $(\".newemail\").eq(nowid).css(\"background\",\"#CACACA\"); $(\".newemail\").eq(nowid).focus(); } break; case 13: var newhtml = $(\".newemail\").eq(nowid).html(); newhtml = newhtml.replace(/<.*?>/g,\"\"); $(\"#me\").val(newhtml); $(\"#myemail\").remove(); } } }) }) //检查email邮箱 function isEmail(str){ if(str.indexOf(\"@\") > 0) { return true; } else { return false; } } </script> 在输入框中输入“qq”、“Sina”、“163”等等可以看到效果 </body> </html>
希望本文所述对大家jQuery程序设计有所帮助。
本文地址:https://www.stayed.cn/item/23611
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我