jquery css实现邮箱自动补全


Posted in Javascript onNovember 14, 2016

 今天在公司做一个电子商务网站的注册会员时,要求用户在电子邮箱文本框中输入时,给与热点提示常用的电子邮箱,帮助用户选择,提高体验效果。下面是用Jquery+css实现的邮箱自动补全,供大家参考和学习。

HTML代码:emailAutoComple.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <title>邮箱自动补全</title>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <link type="text/css" rel="stylesheet" href="css/emailAutoComple.css">
  <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
  <script type="text/javascript" src="js/emailAutoComple.js"></script>
  <script type="text/javascript">
    $(function(){
    $.AutoComplete("#email");  //(要补全文本框的id)
    });
  </script>
 </head>
 
 <body>
  <form action="">
        姓名:<input type="text" name="userName" id="userName"/><br/>
        邮箱:<input type="text" name="email" id="email"/>
  </form>
 </body>
</html>

 JS代码:js/emailAutoComple.js(实现自动补全的关键代码)

jQuery.AutoComplete = function(selector){
  var elt = $(selector);
  var strHtml = '<div class="AutoComplete" id="AutoComplete">'+
        '    <ul class="AutoComplete_ul">'+
        '      <li hz="@163.com"></li>'+
        '      <li hz="@126.com"></li>'+
        '      <li hz="@139.com"></li>'+
        '      <li hz="@189.com"></li>'+
        '      <li hz="@qq.com"></li>'+
        '      <li hz="@vip.sina.com"></li>'+
        '      <li hz="@sina.cn"></li>'+
        '      <li hz="@sina.com"></li>'+
        '      <li hz="@sohu.com"></li>'+
        '      <li hz="@hotmail.com"></li>'+
        '      <li hz="@gmail.com"></li>'+
        '      <li hz="@wo.com.cn"></li>'+
        '      <li hz="@21cn.com"></li>'+
        '      <li hz="@aliyun.com"></li>'+
        '      <li hz="@yahoo.com"></li>'+
        '      <li hz="@foxmail.com"></li>'+
        '    </ul>'+
        '  </div>';
  //将div追加到body上
  $('body').append(strHtml);     
  var autoComplete,autoLi;
  autoComplete = $('#AutoComplete');    
  autoComplete.data('elt',elt);
  autoLi = autoComplete.find('li');
  autoLi.mouseover(function(){
    $(this).siblings().filter('.hover').removeClass('hover');
    $(this).addClass('hover');
  }).mouseout(function(){
    $(this).removeClass('hover');
  }).mousedown(function(){
    autoComplete.data('elt').val($(this).text()).change();
    autoComplete.hide();
  });
  //用户名补全+翻动
  elt.keyup(function(e){
    if(/13|38|40|116/.test(e.keyCode) || this.value==''){
      return false;
    }
    var username = this.value;
    if(username.indexOf('@')==-1){
      autoComplete.hide();
      return false;
    }
    autoLi.each(function(){
      this.innerHTML = username.replace(/\@+.*/,'')+$(this).attr('hz');
      if(this.innerHTML.indexOf(username)>=0){
        $(this).show();
      }else{
        $(this).hide();  
      }
    }).filter('.hover').removeClass('hover');
    autoComplete.show().css({
      left : $(this).offset().left,
      top : $(this).offset().top + $(this).outerHeight(true) - 1,
      position: 'absolute',
      zIndex: '99999'
    });
    if(autoLi.filter(':visible').length==0){
      autoComplete.hide();
    }else{
      autoLi.filter(':visible').eq(0).addClass('hover');      
    }
  }).keydown(function(e){
    if(e.keyCode==38){ //上
      autoLi.filter('.hover').prev().not('.AutoComplete_title').addClass('hover').next().removeClass('hover');
    }else if(e.keyCode==40){ //下
      autoLi.filter('.hover').next().addClass('hover').prev().removeClass('hover');
    }else if(e.keyCode==13){ //确定
      autoLi.filter('.hover').mousedown();
    }
  }).focus(function(){
    autoComplete.data('elt',$(this));
  }).blur(function(){
    autoComplete.hide();
  });
};

CSS代码:css/emailAutoComple.css

#AutoComplete{background:#fff;border:1px solid #4190db;display:none;width:150px;}
#AutoComplete ul{list-style-type:none;margin:0;padding:0;}
#AutoComplete li{color:#333;cursor:pointer;font:12px/22px \5b8b\4f53;text-indent:5px;}
#AutoComplete .hover{background:#6eb6fe;color:#fff;}

效果图:

jquery css实现邮箱自动补全

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery HotKeys轻松搞定键盘事件代码
Aug 30 Javascript
W3C Group的JavaScript1.8 新特性介绍
May 19 Javascript
25个优雅的jQuery Tooltip插件推荐
May 25 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
smartcrop.js智能图片裁剪库
Oct 14 Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
Jun 02 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
JS动态生成年份和月份实例代码
Feb 04 Javascript
详解如何在Vue2中实现组件props双向绑定
Mar 29 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 Javascript
判断JavaScript中的两个变量是否相等的操作符
Dec 21 Javascript
JS常用算法实现代码
Nov 14 #Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 #Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 #Javascript
JS实现的几个常用算法
Nov 12 #Javascript
AngularJS操作键值对象类似java的hashmap(填坑小结)
Nov 12 #Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 #Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 #Javascript
You might like
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
2020/04/26 PHP
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
原生Javascript和jQuery做轮播图简单例子
2016/10/11 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
Node.js API详解之 dns模块用法实例分析
2020/05/15 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[19:15]DK战队纪录片
2014/09/02 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python常用内置模块之xml模块(详解)
2017/05/23 Python
浅谈Python黑帽子取代netcat
2018/02/10 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
如何用Python 加密文件
2020/09/10 Python
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
会计专业自我鉴定
2014/02/10 职场文书
学校教师读书活动总结
2014/07/08 职场文书
海洋科学专业求职信
2014/08/10 职场文书
医院见习报告范文
2014/11/03 职场文书
研究生导师评语
2014/12/31 职场文书
离婚起诉状范本
2015/05/19 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang