当前位置: 移动技术网 > IT编程>开发语言>JavaScript > JS实现的邮箱提示补全效果示例

JS实现的邮箱提示补全效果示例

2018年02月09日  | 移动技术网IT编程  | 我要评论
本文实例讲述了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>

ps:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

javascript正则表达式在线测试工具:

正则表达式在线生成工具:

更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript正则表达式技巧大全》、《javascript替换操作技巧总结》、《javascript查找算法技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》、《javascript中json操作技巧总结》、《javascript错误与调试技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网