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 相关文章推荐
多广告投放代码 推荐
Nov 13 Javascript
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
Aug 11 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
详解layui弹窗父子窗口之间传参数的方法
Jan 16 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 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
php htmlspecialchars加强版
2010/02/16 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
js原型链原理看图说明
2012/07/07 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
Angular 4.X开发实践中的踩坑小结
2017/07/04 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
Jquery动态列功能完整实例
2019/08/30 jQuery
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
python根据京东商品url获取产品价格
2015/08/09 Python
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
python实现的生成word文档功能示例
2019/08/23 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
python的dict判断key是否存在的方法
2020/12/09 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
人事专员岗位职责范本
2014/03/04 职场文书
实习生岗位职责
2014/04/12 职场文书
产品销售计划书
2014/05/04 职场文书
营销与策划专业求职信
2014/06/20 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
暖春观后感
2015/06/08 职场文书