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 相关文章推荐
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
Dec 27 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
require.js配合插件text.js实现最简单的单页应用程序
Jul 12 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
Vue中计算属性computed的示例解读
Jul 26 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
原生js实现针对Dom节点的CRUD操作示例
Aug 26 Javascript
JavaScript this使用方法图解
Feb 04 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遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
jquery模拟SELECT下拉框取值效果
2013/10/23 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
常见python正则用法的简单实例
2016/06/21 Python
python能自学吗
2020/06/18 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
python实现代码审查自动回复消息
2021/02/01 Python
请用用Java代码写一个堆栈
2012/01/26 面试题
Servlet方面面试题
2016/09/28 面试题
会计专业个人求职信范文
2014/01/08 职场文书
银行批评与自我批评
2014/02/10 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
实习护士自荐信
2014/06/21 职场文书
办护照工作证明
2014/10/01 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
2014年女职工工作总结
2014/11/27 职场文书
求职自荐信怎么写
2015/03/04 职场文书
同事打架检讨书
2015/05/06 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书