jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】


Posted in Javascript onSeptember 20, 2016

本文实例讲述了jQuery实现输入框邮箱内容自动补全与上下翻动显示效果。分享给大家供大家参考,具体如下:

最近在做通行证项目,里面注册模块有邮箱注册,需求方想要在输入 @ 后触发下拉框显示各个邮箱,效果如下:

jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】

html 代码:

<!DOCTYPE HTML>
<html lang="en">
<head>
  <meta charset="utf-8"/>
  <title>邮箱自动补全</title>
  <link rel="stylesheet" type="text/css" href="autoComplete.css" media="all"/>
</head>
<body>
  <h1>邮箱自动补全 + 上下翻动</h1>
  <p>当在输入框内输入 @ 时,自动显示各个邮箱的下拉列表。</p>
  <div class="wrap">
    <form action="result.php" method="post">
      <input type="text" name="email" id="email" class="inp" autocomplete="off"/><br/><br/>
      <input type="text" name="other" class="inp" autocomplete="off"/><br/><br/>
      <input type="submit" value="提交表单" id="submit"/>
    </form>
  </div>
</body>
</html>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.autoComplete.js"></script>
<script type="text/javascript">
$(function(){
  $.AutoComplete('#email');
});
</script>

css 代码:

@charset 'utf-8';
.wrap{width:200px;margin:0 auto;}
h1{font-size:36px;text-align:center;line-height:60px;}
p{font-size:20px;text-align:center;line-height:60px;}
.inp{width:190px;border:1px solid #ccc;border-radius:5px;height:30px;line-height:30px;padding:5px;}
#AutoComplete{background:#fff;border:1px solid #4190db;display:none;width:200px;}
#AutoComplete ul{list-style-type:none;margin:0;padding:0;}
#AutoComplete li{color:#333;cursor:pointer;font:12px/22px \5b8b\4f53;text-indent:5px;}
#AutoComplete .hover{background:#6eb6fe;color:#fff;}

js 代码:

jQuery.AutoComplete = function(selector){
  var elt = $(selector);
  var autoComplete,autoLi;
  var strHtml = [];
  strHtml.push('<div class="AutoComplete" id="AutoComplete">');
  strHtml.push('  <ul class="AutoComplete_ul">');
  strHtml.push('    <li class="AutoComplete_title">请选择邮箱后缀</li>');
  strHtml.push('    <li hz="@qq.com"></li>');
  strHtml.push('    <li hz="@163.com"></li>');
  strHtml.push('    <li hz="@126.com"></li>');
  strHtml.push('    <li hz="@sohu.com"></li>');
  strHtml.push('    <li hz="@sina.com"></li>');
  strHtml.push('  </ul>');
  strHtml.push('</div>');
  $('body').append(strHtml.join(''));
  autoComplete = $('#AutoComplete');
  autoComplete.data('elt',elt);
  autoLi = autoComplete.find('li:not(.AutoComplete_title)');
  autoLi.mouseover(function(){
    $(this).siblings().filter('.hover').removeClass('hover');
    $(this).addClass('hover');
  }).mouseout(function(){
    $(this).removeClass('hover');
  }).mousedown(function(){
    autoComplete.data('elt').val($(this).text()).change();
    autoComplete.hide();
  });
  //用户名补全+翻动
  elt.keyup(function(e){
    if(/13|38|40|116/.test(e.keyCode) || this.value == ''){
      return false;
    }
    var username = this.value;
    if(username.indexOf('@') == -1){
      autoComplete.hide();
      return false;
    }
    autoLi.each(function(){
      this.innerHTML = username.replace(/\@+.*/,'') + $(this).attr('hz');
      if(this.innerHTML.indexOf(username) >= 0){
        $(this).show();
      }else{
        $(this).hide();
      }
    }).filter('.hover').removeClass('hover');
    autoComplete.show().css({
      left: $(this).offset().left,
      top: $(this).offset().top + $(this).outerHeight(true) - 1,
      position: 'absolute',
      zIndex: '99999'
    });
    if(autoLi.filter(':visible').length == 0){
      autoComplete.hide();
    }else{
      autoLi.filter(':visible').eq(0).addClass('hover');
    }
  }).keydown(function(e){
    if(e.keyCode == 38){ //上
      autoLi.filter('.hover').prev().not('.AutoComplete_title').addClass('hover').next().removeClass('hover');
    }else if(e.keyCode == 40){ //下
      autoLi.filter('.hover').next().addClass('hover').prev().removeClass('hover');
    }else if(e.keyCode == 13){ //Enter
      autoLi.filter('.hover').mousedown();
      e.preventDefault();  //如有表单,阻止表单提交
    }
  }).focus(function(){
    autoComplete.data('elt',$(this));
  }).blur(function(){
    autoComplete.hide();
  });
}

result.php

<?php
echo $_POST['email'] . "<br/>" . $_POST['other'];
?>

完整实例代码点击此处本站下载。

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
Apr 29 Javascript
ext 同步和异步示例代码
Sep 18 Javascript
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
jquery下为Event handler传递动态参数的代码
Jan 06 Javascript
载入jQuery库的最佳方法详细说明及实现代码
Dec 28 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
yarn与npm的命令行小结
Oct 20 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
Bootstrap 3 进度条的实现
Feb 22 Javascript
Node.js引入UIBootstrap的方法示例
May 11 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 #Javascript
原生js实现ajax方法(超简单)
Sep 20 #Javascript
原生js仿jquery一些常用方法(必看篇)
Sep 20 #Javascript
原生js封装的一些jquery方法(详解)
Sep 20 #Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 #Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 #Javascript
jQuery简单倒计时效果完整示例
Sep 20 #Javascript
You might like
PHP在字符断点处截断文字的实现代码
2011/04/21 PHP
Yii2分页的使用及其扩展方法详解
2016/05/23 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
2011/11/30 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
JS判断日期格式是否合法的简单实例
2016/07/11 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
AngularJS 实现JavaScript 动画效果详解
2016/09/08 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
vue实现在表格里,取每行的id的方法
2018/03/09 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
Python操作MongoDB数据库的方法示例
2018/01/04 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
python爬取抖音视频的实例分析
2021/01/19 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
哈理工毕业生的求职信
2013/12/22 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
超市收银员岗位职责
2015/04/07 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
百家讲坛观后感
2015/06/12 职场文书
车间班组长竞聘书
2015/09/15 职场文书