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 操作select和option常用代码整理
Dec 13 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
Apr 01 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
Aug 07 Javascript
jqueyr判断checkbox组的选中(示例代码)
Nov 08 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
jQuery获取checkbox选中的值
Jan 28 Javascript
新入门node.js必须要知道的概念(必看篇)
Aug 10 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
Dec 10 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
详解webpack编译速度提升之DllPlugin
Feb 05 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 header Content-Type类型小结
2011/07/03 PHP
sae使用smarty模板的方法
2013/12/17 PHP
PHP类的封装与继承详解
2015/09/29 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
封装一下vue中的axios示例代码详解
2020/02/16 Javascript
python中as用法实例分析
2015/04/30 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python实现邮件自动发送
2019/08/10 Python
通过实例简单了解Python中yield的作用
2019/12/11 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
整理HTML5的一些新特性与Canvas的常用属性
2016/01/29 HTML / CSS
前台领班岗位职责
2013/12/04 职场文书
关于人生的感言
2014/01/17 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
体育教师求职信
2014/05/24 职场文书
地球一小时宣传标语
2014/06/24 职场文书
员工辞职信怎么写
2015/02/27 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android