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 内存释放问题
Apr 25 Javascript
js jquery数组介绍
Jul 15 Javascript
非常实用的12个jquery代码片段
Nov 02 Javascript
Bootstrap每天必学之表格
Nov 23 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
详解用函数式编程对JavaScript进行断舍离
Sep 18 Javascript
jQuery中$原理实例分析
Aug 13 jQuery
JavaScript根据json生成html表格的示例代码
Oct 24 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 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
Syphon 使用方法
2021/03/03 冲泡冲煮
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
Python装饰器基础详解
2016/03/09 Python
python数据结构之链表详解
2017/09/12 Python
python中实现k-means聚类算法详解
2017/11/11 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
python打开文件的方式有哪些
2020/06/29 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
网络技术专业推荐信
2014/02/20 职场文书
个人授权委托书格式
2014/08/30 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
MySQL常用慢查询分析工具详解
2022/08/14 MySQL