JavaScript实现邮箱地址自动匹配功能代码


Posted in Javascript onNovember 28, 2016

自动匹配技术:简单的来说就是“根据用户输入的信息来提示一些相似项供用户选择”。具有很广泛的应用,比如我们最常用的百度,当输入一些搜索内容后会自动匹配很多相关信息;再比如我们最常用的输入法,都是使用这种技术,当然这些都比较难了。下面这个例子是比较简单的我们常用邮箱的匹配。代码如下:

1.css代码

#match_email
  {
    margin-left:48px;
    overflow:auto; 
    display:none;
    width:200px;
    border:1px solid #aaa;
    background:#fff;
    max-height:100px;
    line-height:20px;
  }

  #match_email div
  {
    text-decoration:none;
    color:#000;
    width:200px;
  }

  #match_email div:hover
  {
    background:#aaa;  
  }

  input
  {
    height:20px;  
    width:200px;
  }

在css中将overflow设为auto以及将max-height设为100px表示,在该div高度超多100px就是自动生成滚动条。

2.html代码

<div>
  邮箱:<input type="text" name="email" id="email" autocomplete="off" onkeyup="match_mail(this.value)"/>
  <div id="match_email"></div>

</div>

onkeyup时间表示只要手指离开按钮就会触发

3.js代码

<script>
  //mailBoxs里存储用来匹配的串
  var mailBoxs = "@163.com @126.com @129.com"
  mailBoxs += " @qq.com @vip.qq.com @foxmail.com @live.cn @hotmail.com @sina.com @sina.cn @vip.sina.com";
  var matchmail = document.getElementById("match_email");
  var email = document.getElementById("email");
  function match_mail(keyword)
  {
    matchmail.innerHTML = "";
    matchmail.style.display = "none";
    if (!keyword)
      return;
    if (!keyword.match(/^[\w\.\-]+@\w*[\.]?\w*/))  
      return;
    keyword = keyword.match(/@\w*[\.]?\w*/);
    var matchs = mailBoxs.match(new RegExp(keyword+"[^ ]* ","gm"));
    if (matchs)
    {
      matchs = matchs.join("").replace(/ $/,"").split(" ");
      matchmail.style.display = "block";
      for (var i = 0; i < matchs.length; i++)
      {
        matchmail.innerHTML += '<div>'+matchs[i]+'</div>'; 
      }  
    }
  }
  //点击除了匹配框之外的任何地方,匹配框消失
  document.onclick = function(e)
  {
    var target = e.target;
    if (target.id != "matchmail")
      matchmail.style.display = "none";  
  }
  //将匹配框上鼠标所点的字符放入输入框
  matchmail.onclick = function(e)
  {
    var target = e.target;
    email.value = email.value.replace(/@.*/,target.innerHTML);
  }
</script>

在js中好几处都用到了正则表达式:
(1)keyword = keyword.match(/@\w*[\.]?\w*/);只获取@后面的内容,包括@;
(2)var matchs = mailBoxs.match(new RegExp(keyword+"[^ ]* ","gm"));进行匹配,把mailBoxs中和keyword匹配的存入matchs中,[^ ]* 指遇到空格不匹配,参数”gm”中'g'指进行全局匹配,'m'指多行匹配;
(3)matchs = matchs.join("").replace(/ $/,"").split(" ");字符串的结尾用空格匹配,$表示字符串的结尾。

在两个匿名函数中,e是在鼠标点击事件发生时系统自动生成的·,e.target是获得鼠标所点的当前对象。

最终效果如图:

JavaScript实现邮箱地址自动匹配功能代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jscript之List Excel Color Values
Jun 13 Javascript
设置下载不需要倒计时cookie(倒计时代码)
Nov 19 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
js图片处理示例代码
May 12 Javascript
jQuery内部原理和实现方式浅析
Feb 03 Javascript
jQuery选择器及jquery案例详解(必看)
May 20 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
基于JavaScript实现全选、不选和反选效果
Feb 15 Javascript
vue如何获取点击事件源的方法
Aug 10 Javascript
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
微信小程序 this.triggerEvent()的具体使用
Dec 10 Javascript
JS数组方法reduce的用法实例分析
Mar 03 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 #Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 #Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 #Javascript
基于slideout.js实现移动端侧边栏滑动特效
Nov 28 #Javascript
js实现右键菜单功能
Nov 28 #Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 #Javascript
详解JS-- 浮点数运算处理
Nov 28 #Javascript
You might like
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php计算当前程序执行时间示例
2014/04/24 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
vue-i18n实现中英文切换的方法
2020/07/06 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
Django中如何防范CSRF跨站点请求伪造攻击的实现
2019/04/28 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
婚礼主持词
2014/03/13 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
个人求职信范文
2014/05/24 职场文书
班级标语大全
2014/06/21 职场文书
公司领导班子对照材料
2014/08/18 职场文书
2015年社区服务活动总结
2015/03/25 职场文书
结婚主持人致辞
2015/07/28 职场文书
Go Plugins插件的实现方式
2021/08/07 Golang