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 相关文章推荐
javascript实现 在光标处插入指定内容
May 25 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
表单JS弹出填写提示效果代码
Apr 16 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
node.js中使用socket.io制作命名空间
Dec 15 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
分享Bootstrap简单表格、表单、登录页面
Aug 04 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
JavaScript中七种流行的开源机器学习框架
Oct 11 Javascript
axios+Vue实现上传文件显示进度功能
Apr 14 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 可阅读随机字符串代码
2010/05/26 PHP
php微信支付之APP支付方法
2015/03/04 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
js密码强度校验
2015/11/10 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
js断点调试经验分享
2017/12/08 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
pandas删除指定行详解
2019/04/04 Python
python 命令行传入参数实现解析
2019/08/30 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
学校司机岗位职责
2013/11/14 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
消防安全管理制度
2014/02/01 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
食堂管理制度范本
2015/08/04 职场文书
感谢信的技巧及范例
2019/05/15 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
深入详解JS函数的柯里化
2021/06/09 Javascript