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 相关文章推荐
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
May 06 Javascript
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
js读取本地excel文档数据的代码
Nov 11 Javascript
jQuery之折叠面板的深入解析
Jun 19 Javascript
Javascript实现简单二级下拉菜单实例
Jun 15 Javascript
js实现的页面矩阵图形变换特效
Jan 26 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
微信小程序实现单选功能
Oct 30 Javascript
微信小程序实现留言功能
Oct 31 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
Apr 25 Javascript
JS正则表达式封装与使用操作示例
May 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
Sony CFR 320 修复改造
2020/03/14 无线电
php中的实现trim函数代码
2007/03/19 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jQuery中find()方法用法实例
2015/01/07 Javascript
JQuery基础语法小结
2015/02/27 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
2017/12/21 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
python使用tensorflow深度学习识别验证码
2018/04/03 Python
Python实战之制作天气查询软件
2019/05/14 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
HTML5 Canvas draw方法制作动画效果示例
2013/07/11 HTML / CSS
小学网上祭英烈活动总结
2014/07/05 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
幼儿园大班开学寄语(2015秋季)
2015/05/27 职场文书
建党伟业观后感
2015/06/01 职场文书
在人间读书笔记
2015/06/30 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
python实现求纯色彩图像的边框
2021/04/08 Python
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python
Golang生成Excel文档的方法步骤
2021/06/09 Golang
python基础之函数的定义和调用
2021/10/24 Python
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB