前阵子用QQ邮箱发了几封邮件,发现其中的输入地址栏很别致,看了下,做的很精细,用户体验也灰常的不错。就拿过来做了下实验。但是代码量还是大了点,而且我一直强调的适用性与通用性的抉择上我又要纠结了。昨天遇到一个问题,就是在一个文本框里输入一堆人的姓名,这些姓名已经存在数据库中了,大家也知道,客户永远都是希望能少付出点,多回报点的,基于这个情况我打算把QQ邮箱的借过来用,可是问题出现了,剥离他的功能不难,但是剥离完之后(因为很多地方的实现不是那么的一直,比如我就不需要邮箱检验等)发现太庞大了,而且也不是那么的适用于我的一个小功能上,因此就自己重新写了一个很小很小的简化版。虽然说花费的精力不大,但是却让客户很happy,何乐而不为呢。

由于csdn博客系统的原因,这段代码中会出现textStrtextStr的字样,请替换成textStr。有两处。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  <title>智能填写</title>  <style type="text/css" >          #multiinput {  font-size:22px;  border:1px #000 solid;  font-weight:700;  }  #newInput {  height:24px;  font-size:22px;  border:none;  }  #selection ul {  margin:0;  padding:0;  border:1px solid #000;  width:75px;  border-top:0;  }  #selection li {  list-style:none;  margin:0;  padding:0;  height:24px;  cursor:pointer;  width:75px;  }  #multiinput a:hover  {  background-color:#eee;  cursor:text;  }  li.selected {  background-color:#eee;  }  </style>  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>  <script type="text/javascript"><!--  var str = ['张学友','张信哲','刘德华','孙燕姿','周杰伦','张含韵','许飞','许巍','张宇','周星驰','唐朝乐队','迪克牛仔','郑伊健','陈小春','汪峰'];  $(function(){  //输入框获得焦点时  $("#newInput").focus(function(){  var textStr = ["<ul>"];  for(var i = 0; i < str.length; i++){  textStr.push('<li>' + str[i] + '</li>');  }  textStr.push("</ul>");  textStr = textStr.join('');  $("#selection").show().empty().append(textStr);  })  //输入框失去焦点时  .blur(function(e){  $("#selection").hide();  })  //按键按下时  .keydown(function(e){  if(e.keyCode == 8 && $(this).val().length == 0) {  $(this).prev().remove();  } else if(e.keyCode == 40) {  move(true);  }   else if(e.keyCode == 38) {  move(false);  } else if(e.keyCode == 13) {  $('<a>' + $('.selected').text() + ';</a>').insertBefore('#newInput');  $('#newInput').val('').focus();  }  })  //按键弹出时,进行搜索匹配。  .keyup(function(e){  if(e.keyCode == 40 || e.keyCode == 8 || e.keyCode == 38)  return;  var textStr = $(this).val();  var reg = new RegExp('(?=[^@]+)[^@]*' + textStr + '[^@]*(?=@|$)','g');  var arr = str.join("@").match(reg) || [];  textStr = ['<ul>'];  for(var i = 0; i < arr.length; i++) {  textStr.push('<li>' + arr[i] + '</li>');  }  textStr.push('</ul>');  textStr = textStr.join('');  $("#selection").empty().show().append(textStr);  });  //li的背景效果  $("#selection li").live("mouseover",function(){  $(this).siblings().removeClass('selected').end().addClass('selected');  })  //li的选中事件  .live("mousedown",function(){  $('<a>' + $(this).text() + ';</a>').insertBefore("#newInput");  $("#newInput").val('').focus();   });  $("#multiinput a").live('dblclick',function(){  $(this).remove();  });  });  function move(down) {  var selected = $('.selected');  if(down) {  if(selected.length == 0) {  $('#selection li:first').addClass('selected');  } else {  selected.removeClass('selected').next().addClass('selected');  }  } else {  if(selected.length == 0) {  $('#selection li:last').addClass('selected');  } else  {  selected.removeClass('selected').prev().addClass('selected');  }  }  }  // --></script>  </head>  <body>  <div id="multiinput">  <a id="t"></a><input id="newInput" type="text" autocomplete="off"/>  </div>  <div>  <div id="selection">  </div>  </div>  </body>
</html> 

这次由于机器的原因,我没有测试多个浏览器的问题,甚至连一些小BUG也没测试,发出来只是给大家一个参考,同时希望有兴趣的童鞋来改进下,如果对QQ邮箱本身的强大功能有兴趣的可以去看看,绝非是这这个这么简单。里面很多机制足以你们去想破脑袋的。作为一个开发者,在用好玩的东西的时候,你是否想过是怎么实现的呢。

JavaScript智能填写续写版(QQ邮箱地址栏简化版)相关推荐

  1. 手机版qq邮箱一直连接服务器失败,iphone邮箱怎么连接服务器 iphone邮箱无法连接服务器怎么办...

    随着现在手机的使用频率越来越高,它不仅对我们学习以及娱乐非常重要,工作方面也有很大好处,比如手机的邮箱功能便是如此.通过手机邮箱,我们不仅联络亲朋好友非常方便,处理工作的事情也是相当便利,它还可以帮助 ...

  2. 苹果邮件怎么添加qq邮箱_科技资讯:QQ邮箱格式怎么填写

    最近关于QQ邮箱格式怎么填写在网上的热度是非常高的,很多网友们也都是非常关注QQ邮箱格式怎么填写这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么如果说有感兴趣的网友们想知道具体的情况的话 ...

  3. 手机版网易邮箱大师中添加qq邮箱时,一直卡在验证密保的界面怎么办

    #问题描述:手机版网易邮箱大师中添加qq邮箱时,一直卡在验证密保的界面怎么办 解决办法: 打开网页版QQ邮箱,点击设置,选择账户 下滑翻到POP3/IMAP/SMTP/Exchange/CardDAV ...

  4. 仿qq邮箱源码程序_巧用小程序·云开发实现邮件发送功能丨实战

    先看效果图: 通过上面的日志,可以看出我们是158开头的邮箱给250开头的邮箱发送邮件,下面是成功接收到的邮件. 准备工作 1.qq邮箱一个 2.开通你的qq邮箱的授权码(会具体讲解) 3.注册自己的 ...

  5. qq邮箱如何在win10邮箱连接到服务器,win10自带邮箱如何使用?win10自带邮箱如何同步qq邮箱邮件?...

    win10自带邮箱如何使用? 相信很多小伙伴在登录win10自带的邮箱登录QQ邮箱时,显示同步失败或者登录超时,但又找不到相关的资料,下面是我自己邮箱的操作流程,小伙伴可以尝试一下,有什么问题留言即可 ...

  6. Mac邮件客户端怎么添加QQ邮箱

    Mac邮件客户端怎么添加QQ邮箱?在mac电脑中,默认是没有qq邮箱的,如果需要使用QQ邮箱就需要我们手动添加一下.那么该如何在MAC OS添加QQ邮箱呢?以下文章就告诉你mac电脑添加qq邮箱的方法 ...

  7. python脚本实现qq邮箱发送邮件

    直接调用python自带得smtplib 库和 email 库就能实现邮件的发送 qq邮箱发送邮件需要在qq邮箱中设置开启qq邮箱授权码 进入网页版qq邮箱,点击设置,找到账户设置 下拉到最下面 生成 ...

  8. 关于gmail绑定qq邮箱的问题

    此次 Gmail 更新,不仅带来了 Material Design 化的全新界面,还将原本独立的 Exchange 和邮件服务整合其中.也就是说,除了 Google 自家的邮箱服务, 我们还可以使用 ...

  9. 手机qq如何绑定qq邮箱服务器,iphone怎么绑定qq邮箱

    以下解答是其他网友解答的,我操作后解决了问题,我的问题和你相同,一年多了, 现分享给大家: 登陆你的网页QQ邮箱,在邮箱设置里选择账号,启用你的邮箱IMAP和POP功能,查看你的邮箱发件昵称,记住这个 ...

最新文章

  1. 动态生成GridView时,加入DataKeyNames属性,回调时出错解决方法
  2. 按次计费接口的简单实现思路
  3. ML之H-Clusters:基于H-Clusters算法利用电影数据集实现对top 100电影进行文档分类
  4. Android UI之ProgressBar
  5. Zookeeper理解---ZAB协议
  6. Spark SQL UDF2的使用
  7. 配电柜测试软件,低压配电柜测试方法及流程.docx
  8. spring --aop(日志记录)在工程中实际使用
  9. python中字符串大小写转换常用操作
  10. Redis数据结构——跳跃表-skiplist
  11. 计算机算法知识点总结,2021计算机考研知识点总结(1)
  12. Nginx+Tomcat负载平衡
  13. 数字逻辑电路课程设计报告
  14. VS 2013 所有产品密钥
  15. BliBli抢楼全攻略
  16. 手机重装android系统,安卓手机系统怎么重装(刷机)
  17. 等保合规是什么意思?怎么做?
  18. 用mysql设计学籍管理系统_学生学籍管理系统(SQL数据库系统设计)(完整版).pdf...
  19. 魔百盒CM211-2_ZG代工-强刷固件包和教程
  20. 努力和天赋哪个更重要

热门文章

  1. Python OpenCV 3.x 示例:6~11
  2. 蓝牙鼠标链接Win10需要“输入MI MOUSE BT3.0的PIN”的解决方案
  3. 移动端实现图标拖拽效果
  4. UltraEdit 注册机使用说明
  5. Facebook like 按钮的语言设置
  6. 通过 blast 结果查看 测序数据fastq是否被污染,以及污染reads所属物种、所占比例
  7. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  8. 杰理之79NRTC 时间【篇】
  9. 微信web开发者工具、网易云音乐、为知笔记等软件崩溃无法打开等问题的解决
  10. RPG Maker MV 做任务