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实现检测指定目录是否存在的方法
Jan 12 Javascript
jQuery1.6 类型判断实现代码
Sep 01 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
Sep 03 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
jquery 使用简明教程
Mar 05 Javascript
js制作简易年历完整实例
Jan 28 Javascript
JS实现动态给图片添加边框的方法
Apr 01 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
Oct 13 Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 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图片处理之图片背景、画布操作
2014/11/19 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
jquery等待效果示例
2014/05/01 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
vue 导航内容设置选中状态样式的例子
2019/11/01 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
JavaScript实现答题评分功能页面
2020/06/24 Javascript
Python显示进度条的方法
2014/09/20 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python实现flappy bird游戏
2018/12/24 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python中的xlrd模块使用原理解析
2020/05/21 Python
python如何快速拼接字符串
2020/10/28 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
志愿者宣传口号
2014/06/17 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
五年级学生评语大全
2014/12/26 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
浅谈如何提高PHP代码质量之单元测试
2021/05/28 PHP
Pandas 稀疏数据结构的实现
2021/07/25 Python