jQuery实现Email邮箱地址自动补全功能代码


Posted in Javascript onNovember 03, 2015

本文实例讲述了jQuery实现Email邮箱地址自动补全功能代码。分享给大家供大家参考,具体如下:

jQuery Email邮箱地址自动补全代码,输入Email时,会自动加入@符号,在输入框中输入“qq”、“Sina”、“163”等等可以看到效果;鼠标经过提示Email时,高亮该条Email,鼠标点击Email时,文本框内容替换成该条Email,并删除提示层.

运行效果截图如下:

jQuery实现Email邮箱地址自动补全功能代码

在线演示地址如下:

具体代码如下:

<!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程序设计有所帮助。

Javascript 相关文章推荐
面向对象的编程思想在javascript中的运用上部
Nov 20 Javascript
jQuery AJAX 调用WebService实现代码
Mar 24 Javascript
jQuery温习篇 强大的JQuery选择器
Apr 24 Javascript
JS 如果改变span标签的是否隐藏属性
Oct 06 Javascript
JQuery for与each性能比较分析
May 14 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
Javascript实现页面跳转的几种方式分享
Oct 26 Javascript
JS中正则表达式全局匹配模式 /g用法详解
Apr 01 Javascript
JavaScript之面向对象_动力节点Java学院整理
Jun 29 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
JavaScript字符串转数字的简单实现方法
Nov 27 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
Nov 03 #Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 #Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 #Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 #Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 #Javascript
jQuery实用技巧必备(中)
Nov 03 #Javascript
jQuery实用技巧必备(上)
Nov 02 #Javascript
You might like
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
全国省市二级联动下拉菜单 js版
2016/05/10 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
名片管理系统python版
2018/01/11 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Django框架自定义session处理操作示例
2019/05/27 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
考试退步检讨书
2014/01/15 职场文书
副董事长岗位职责
2014/04/02 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
儿园租房协议书范本
2014/12/02 职场文书
三潭印月的导游词
2015/02/12 职场文书
以权谋私检举信范文
2015/03/02 职场文书