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 相关文章推荐
jQuery实现行文字链接提示效果的方法
Mar 10 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
Jun 25 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
Aug 10 Javascript
jQuery实现下拉框功能实例代码
May 06 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
AngularJS中isolate scope的用法分析
Nov 22 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
PHP实现记录代码运行时间封装类实例教程
May 08 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 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中的Class的几点个人看法
2006/10/09 PHP
PHP默认安装产生系统漏洞
2006/10/09 PHP
PHP连接access数据库
2008/03/27 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
2019/08/22 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
在python带权重的列表中随机取值的方法
2019/01/23 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
django序列化serializers过程解析
2019/12/14 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
校园摄影活动策划方案
2014/02/05 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
个人委托书怎么写
2014/09/17 职场文书
元旦标语大全
2014/10/09 职场文书
先进集体申报材料
2014/12/25 职场文书
作文评语集锦
2014/12/25 职场文书
党员个人总结自评
2015/02/14 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers