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 相关文章推荐
JavaScript创建命名空间(namespace)的最简实现
Dec 11 Javascript
二行代码解决全部网页木马
Mar 28 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
jQuery异步提交表单实例
May 30 jQuery
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
vue.js中$set与数组更新方法
Mar 08 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
使用Angular Cli如何创建Angular私有库详解
Jan 30 Javascript
js module大战
Apr 19 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
微信小程序实现签字功能
2019/12/23 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
实例讲解python函数式编程
2014/06/09 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
诉讼财产保全担保书
2014/05/20 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
销售员自我评价
2015/03/11 职场文书
银行稽核岗位职责
2015/04/13 职场文书
公司与个人合作协议书
2016/03/19 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技