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 最近浏览过的商品的功能实现代码
May 14 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
Oct 20 Javascript
js中将具有数字属性名的对象转换为数组
Mar 06 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
Mar 10 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
Nov 05 Javascript
详谈javascript中的cookie
Jun 03 Javascript
es6学习笔记之Async函数的使用示例
May 11 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
Mar 29 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
Sep 30 Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 Javascript
vue+iview分页组件的封装
Nov 17 Vue.js
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
php5新改动之短标记启用方法
2008/09/11 PHP
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
php动态实现表格跨行跨列实现代码
2012/11/06 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JavaScript包装对象使用详解
2015/07/09 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
vue中监听返回键问题
2019/08/28 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python中遍历列表的方法总结
2019/06/27 Python
如何理解Python中的变量
2020/06/01 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
请说出以下代码输出什么
2013/08/30 面试题
应届毕业生的个人自我鉴定
2013/10/24 职场文书
大学生自我鉴定
2013/12/16 职场文书
高中美术教学反思
2014/01/19 职场文书
个人总结怎么写
2015/02/26 职场文书
可可西里观后感
2015/06/08 职场文书