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 相关文章推荐
ECMAScript 基础知识
Jun 29 Javascript
jQuery 页面 Mask实现代码
Jan 09 Javascript
Jquery图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
JQuery实现table行折叠效果以JSON做数据源
May 26 Javascript
js自定义Tab选项卡效果
Jun 05 Javascript
node+koa实现数据mock接口的方法
Sep 20 Javascript
浅析Node.js非对称加密方法
Jan 29 Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
TypeScript 使用 Tuple Union 声明函数重载
Apr 07 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实现过滤字符串中的中文和数字实例
2015/07/29 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
php中错误处理操作实例分析
2019/08/23 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
node+multer实现图片上传的示例代码
2020/02/18 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
我的网上商城创业计划书
2013/12/26 职场文书
期末自我鉴定
2014/01/23 职场文书
计算机学生求职信范文
2014/01/30 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
劳动竞赛口号
2014/06/16 职场文书
党员公开承诺书2015
2015/01/21 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android