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 函数参数限制说明
Nov 19 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
Dec 03 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
JavaScript实现省市县三级级联特效
May 16 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
Dec 09 Javascript
解决vue select当前value没有更新到vue对象属性的问题
Aug 30 Javascript
在Vue组件中获取全局的点击事件方法
Sep 06 Javascript
Angular resolve基础用法详解
Oct 03 Javascript
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
JavaScript中的垃圾回收与内存泄漏示例详解
May 02 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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
初识ThinkPHP控制器
2016/04/07 PHP
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
2017/08/28 jQuery
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Python简单的制作图片验证码实例
2017/05/31 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python 利用内置set函数对字符串和列表进行去重的方法
2018/06/29 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
django 单表操作实例详解
2019/07/30 Python
基于python的列表list和集合set操作
2019/11/24 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
台湾旅游网站:灿星旅游
2018/10/11 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
公司同意接收函
2014/01/13 职场文书
花坛标语大全
2014/06/30 职场文书
实习单位指导教师评语
2014/12/30 职场文书
道歉信范文
2015/05/12 职场文书
离婚代理词范文
2015/05/23 职场文书
创业计划书之面包店
2019/09/12 职场文书