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 相关文章推荐
自己的js工具 Cookie 封装
Aug 21 Javascript
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
js实现幻灯片播放图片示例代码
Nov 07 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
JavaScript获取并更改input标签name属性的方法
Jul 02 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
May 29 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
详解ES6 Symbol 的用途
Oct 14 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
Oct 18 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
javascript数据类型详解
2017/02/07 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
python决策树之CART分类回归树详解
2017/12/20 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
基于Python实现简单学生管理系统
2020/07/24 Python
序列化Python对象的方法
2020/08/01 Python
python 实用工具状态机transitions
2020/11/21 Python
python opencv实现图像配准与比较
2021/02/09 Python
介绍下java.util.Arrays类
2012/10/16 面试题
自我鉴定范文300字
2013/10/01 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书