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 相关文章推荐
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
JavaScript对象之深度克隆介绍
Dec 08 Javascript
js简单抽奖代码
Jan 16 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
JS中的二叉树遍历详解
Mar 18 Javascript
js 连续赋值的简单实现
Jun 13 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
Dec 07 Javascript
JavaScript同源策略和跨域访问实例详解
Apr 03 Javascript
vue使用Font Awesome的方法步骤
Feb 26 Javascript
vue-cli3 DllPlugin 提取公用库的方法
Apr 24 Javascript
基于vue-cli3创建libs库的实现方法
Dec 04 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 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
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
php编写的简单页面跳转功能实现代码
2013/11/27 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php实现微信企业转账功能
2018/10/02 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
javascript常用的设计模式
2017/02/09 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
详解服务端预渲染之Nuxt(介绍篇)
2019/04/07 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
Python制作爬虫抓取美女图
2016/01/20 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python AES加密模块用法分析
2017/05/22 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
浅述python2与python3的简单区别
2018/09/19 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
浅谈python3中input输入的使用
2019/08/02 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
2020/02/13 Python
基于Python fminunc 的替代方法
2020/02/29 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
干部年终考核评语
2015/01/04 职场文书
毕业生对母校寄语
2015/02/26 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
Pandas 稀疏数据结构的实现
2021/07/25 Python