JS实现的邮箱提示补全效果示例


Posted in Javascript onJanuary 30, 2018

本文实例讲述了JS实现的邮箱提示补全效果。分享给大家供大家参考,具体如下:

现在要实现的是类似网易登录时的邮箱提示框的效果,不过这里我打算稍微改变一下,就是在输入@的时候再出现邮箱提示列表

实现提示的原理是采用正则进行匹配

效果图如下:

JS实现的邮箱提示补全效果示例

代码如下:

<!doctype html>
<html>
<head>
  <meta charset="utf-8" />
  <title>邮箱补全提示</title>
  <style>
    ul{padding:0px;margin:0px;}
    .login_autoComplete{width:256px;border:1px solid #4190db;position:absolute;background-color:#ffffff;z-index:99;top:109px;left:40px;display:none}
    .login_auto_ul em{font-style:normal}
    .login_auto_ul li.login_auto_title{font-weight:normal;line-height:30px;}
    .login_auto_ul li{line-height:22px;text-indent:5px;font-family:"Arial";cursor:pointer;font-weight:bold;color:#333}
    .login_auto_ul li.hover,.login_auto_ul li.curr{color:#ffffff;background-color:#6eb6fe}
  </style>
  <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
  <script>
    window.email_auto = function(selector){
      var elt = $(selector);
      var strHtml = '<div class="login_autoComplete" id="login_autoComplete">'+
            '    <ul class="login_auto_ul">'+
            '      <li class="login_auto_title">请选择邮箱后缀</li>'+
            '      <li class="hover" hz="@qq.com"></li>'+
            '      <li hz="@163.com"></li>'+
            '      <li hz="@126.com"></li>'+
            '      <li hz="@yahoo.com"></li>'+
            '      <li hz="@sina.com"></li>'+
            '      <li hz="@21cn.com"></li>'+
            '    </ul>'+
            '  </div>';
      var lc = "#login_autoComplete";
      var autoComplete,autoLi;
      if($(lc).length==0){
        $("body").append(strHtml);
        $(lc).data("elt",elt);
        autoComplete = $("#login_autoComplete");
        autoLi = autoComplete.find("li:not(.login_auto_title)");
        autoLi.mouseover(function(){
          $(this).siblings().filter(".hover").removeClass("hover");
          $(this).addClass("hover");
        }).mouseout(function(){
          $(this).removeClass("hover");
        }).mousedown(function(){
          $(lc).data("elt").val($(this).text()).change();
          $(this).parent().parent().hide();
        });
      }else{
        $(lc).data("elt",elt);
        autoComplete = $("#login_autoComplete");
        autoLi = autoComplete.find("li:not(.login_auto_title)");
      }
      $(lc).css("width",elt.outerWidth()-1);
      //用户名补全+翻动
      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
        });
        if(autoLi.filter(":visible").length==0){
          autoComplete.hide();
        }else{
          autoLi.filter(":visible").eq(0).addClass("hover");
        }
      }).change(function(){
        $("#login_autoComplete").hide();
      }).keydown(function(e){
        if(e.keyCode==38){ //上
          autoLi.filter(".hover").prev().not(".login_auto_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){ //Enter
          autoLi.filter(".hover").mousedown();
        }
      }).focus(function(){
        $("#login_autoComplete").data("elt",$(this));
      });
    }
    $(function(){
      email_auto("#xxx");
    });
  </script>
</head>
<body>
三水点靠木测试:邮箱补全提示<br/>
<input type="text" id="xxx" style="width:300px"/>
</body>
</html>
Javascript 相关文章推荐
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
Javascript中3个需要注意的运算符
Apr 02 Javascript
详解参数传递四种形式
Jul 21 Javascript
JavaScript中数组继承的简单示例
Jul 29 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
JavaScript数组和对象的复制
Mar 21 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
如何实现一个webpack模块解析器
Oct 24 Javascript
JavaScript怎样在删除前添加确认弹出框?
May 27 Javascript
详解datagrid使用方法(重要)
Nov 06 Javascript
JS实现的抛物线运动效果示例
Jan 30 #Javascript
express如何使用session与cookie的方法
Jan 30 #Javascript
JavaScript实现的贝塞尔曲线算法简单示例
Jan 30 #Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 #Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
Jan 30 #Javascript
微信小程序数据存储与取值详解
Jan 30 #Javascript
Vue精简版风格概述
Jan 30 #Javascript
You might like
php实现encode64编码类实例
2015/03/24 PHP
php采集中国代理服务器网的方法
2015/06/16 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
select标签模拟/美化方法采用JS外挂式插件
2013/04/01 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
python自带的http模块详解
2016/11/06 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python实现代码统计器
2019/09/19 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
Python与C/C++的相互调用案例
2021/03/04 Python
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
linux下进程间通信的方式
2014/12/23 面试题
卫校护理专业毕业生求职信
2013/11/26 职场文书
护理工作感言
2014/01/16 职场文书
中班开学寄语
2014/04/04 职场文书
公司股东合作协议书
2014/09/14 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
群众路线对照检查剖析材料
2014/10/09 职场文书
小学生毕业评语
2014/12/26 职场文书
python使用torch随机初始化参数
2022/03/22 Python