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密码强度校验
Dec 02 Javascript
jQuery仿京东商城楼梯式导航定位菜单
Jul 25 Javascript
AngularJS 简单应用实例
Jul 28 Javascript
jQuery EasyUI ProgressBar进度条组件
Feb 28 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
vue高德地图之玩转周边
Jun 16 Javascript
js判断数组是否包含某个字符串变量的实例
Nov 24 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 Javascript
vue实现带过渡效果的下拉菜单功能
Feb 19 Javascript
js+css3实现炫酷时钟
Aug 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
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
php计算title标题相似比的方法
2015/07/29 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHP PDOStatement::getAttribute讲解
2019/02/01 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
JS编程小常识很有用
2012/11/26 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
初学Python函数的笔记整理
2015/04/07 Python
Python数组定义方法
2016/04/13 Python
pycharm安装图文教程
2017/05/02 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Python SVM(支持向量机)实现方法完整示例
2018/06/19 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
详解django中使用定时任务的方法
2018/09/27 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
优秀研究生自我鉴定
2013/12/04 职场文书
超市理货员岗位职责
2014/07/04 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
2015年体育部工作总结
2015/04/02 职场文书
杨善洲观后感
2015/06/04 职场文书