如题所示:

    1. 在html中输入邮箱的input要有自己的class,以及自己父元素的class。例如:

        <div class="parentemail"><input type="text" name="email" class="email" placeholder="邮箱登陆"/></div>
      
      <script type="text/css">
      // 初始化
      $(function() {new EmailAutoComplete({parentCls      :  '.parentemail',       // 当前input元素的父级类targetCls      :  '.email',       // 目标input元素// ...更多的配置项参考插件的config});
      });
      </script>

  1. 引入插件:
    <script type="text/javascript" src="js/autofillmail.js" charset="utf-8"></script>

  2. 将插件的浮动添加默认样式(可以根据自己的页面修改的样式):
     <style type="text/css">*{font-family: "微软雅黑";margin:0;padding:0;}ul,li{list-style:none;}.inputElem {height:22px;line-height:22px;border:1px solid #ff4455;}.auto-tip li{width:100%;height:30px;line-height:30px;font-size:16px;background:#eee;}.auto-tip li.hoverBg{background:#ddd;cursor:pointer;}.auto-tip li .em{color:#ccc;}.red{color:#bbb;}.hidden {display:none;}</style>

  3. 最后是插件代码:
    /*** 邮箱自动提示插件* @constructor EmailAutoComplete* @ options {object} 可配置项*/function EmailAutoComplete(options) {this.config = {targetCls      :  '.inputElem',       // 目标input元素parentCls      :  '.parentCls',       // 当前input元素的父级类hiddenCls      :  '.hiddenCls',       // 当前input隐藏域 searchForm     :  '.jqtransformdone', //form表单hoverBg        :  'hoverBg',          // 鼠标移上去的背景inputValColor  :  'red',              // 输入框输入提示颜色mailArr        : ["@163.com","@qq.com","@gmail.com","@126.com","@hotmail.com","@yahoo.com","@yahoo.com.cn","@live.com","@sohu.com","@sina.com"], //邮箱数组isSelectHide   : true,                // 点击下拉框 是否隐藏 默认为truecallback       : null                 // 点击某一项回调函数
        };this.cache = {onlyFlag            : true,     // 只渲染一次currentIndex        : -1,oldIndex            : -1};this.init(options);}
    EmailAutoComplete.prototype = {constructor: EmailAutoComplete,init: function(options){this.config = $.extend(this.config,options || {});var self = this,_config = self.config,_cache = self.cache;$(_config.targetCls).each(function(index,item){$(item).keyup(function(e){var target = e.target,targetVal = $.trim($(this).val()),keycode = e.keyCode,elemHeight = $(this).outerHeight(),elemWidth = $(this).outerWidth(),parentNode = $(this).closest(_config.parentCls);$(parentNode).css({'position':'relative'});// 如果输入框值为空的话 那么下拉框隐藏if(targetVal == '') {$(item).attr({'data-html':''});// 给隐藏域赋值$(_config.hiddenCls,parentNode).val('');_cache.currentIndex = -1;_cache.oldIndex = -1;$(".auto-tip",parentNode) && !$(".auto-tip",parentNode).hasClass('hidden') && $(".auto-tip",parentNode).addClass('hidden');self._removeBg(parentNode);}else {$(item).attr({'data-html':targetVal});// 给隐藏域赋值
                        $(_config.hiddenCls,parentNode).val(targetVal);$(".auto-tip",parentNode) && $(".auto-tip",parentNode).hasClass('hidden') && $(".auto-tip",parentNode).removeClass('hidden');// 渲染下拉框内容
                        self._renderHTML({keycode:keycode,e:e,target:target,targetVal:targetVal,height:elemHeight,width:elemWidth,parentNode:parentNode});}});});// 阻止form表单默认enter键提交$(_config.searchForm).each(function(index,item) {$(item).keydown(function(e){var keyCode = e.keyCode;if(keyCode == 13) {return false;}});});// 点击文档document时候 下拉框隐藏掉$(document).click(function(e){e.stopPropagation();var target = e.target,tagCls = _config.targetCls.replace(/^\./,'');if(!$(target).hasClass(tagCls)) {$('.auto-tip') && $('.auto-tip').each(function(index,item){!$(item).hasClass('hidden') && $(item).addClass('hidden');});}});},/** 渲染下拉框提示内容* @param cfg{object}*/_renderHTML: function(cfg) {var self = this,_config = self.config,_cache = self.cache,curVal;var curIndex = self._keyCode(cfg.keycode);$('.auto-tip',cfg.parentNode).hasClass('hidden') && $('.auto-tip',cfg.parentNode).removeClass('hidden');if(curIndex > -1){// 键盘上下操作
                self._keyUpAndDown(cfg.targetVal,cfg.e,cfg.parentNode);}else {if(/@/.test(cfg.targetVal)) {curVal = cfg.targetVal.replace(/@.*/,'');}else {curVal = cfg.targetVal;}if(_cache.onlyFlag) {$(cfg.parentNode).append('<input type="hidden" class="hiddenCls"/>');var wrap = '<ul class="auto-tip">';for(var i = 0; i < _config.mailArr.length; i++) {wrap += '<li class="p-index'+i+'">'+'<span class="output-num"></span><em class="em" data-html="'+_config.mailArr[i]+'">'+_config.mailArr[i]+'</em></li>';}wrap += '</ul>';_cache.onlyFlag = false;$(cfg.parentNode).append(wrap);$('.auto-tip',cfg.parentNode).css({'position':'absolute','top':cfg.height,'width':cfg.width - 2 + 'px','left':0,'border':'1px solid #ccc','z-index':10000});}// 给所有li添加属性 data-html$('.auto-tip li',cfg.parentNode).each(function(index,item){$('.output-num',item).html(curVal);!$('.output-num',item).hasClass(_config.inputValColor) && $('.output-num',item).addClass(_config.inputValColor);var emVal = $.trim($('.em',item).attr('data-html'));$(item).attr({'data-html':curVal + '' +emVal});});// 精确匹配内容
                self._accurateMate({target:cfg.target,parentNode:cfg.parentNode});// 鼠标移到某一项li上面时候
                self._itemHover(cfg.parentNode);// 点击对应的项时
                self._executeClick(cfg.parentNode);}},/*** 精确匹配某项内容*/_accurateMate: function(cfg) {var self = this,_config = self.config,_cache = self.cache;var curVal = $.trim($(cfg.target,cfg.parentNode).attr('data-html')),newArrs = [];if(/@/.test(curVal)) {// 获得@ 前面 后面的值var prefix = curVal.replace(/@.*/, ""),suffix = curVal.replace(/.*@/, "");$.map(_config.mailArr,function(n){var reg = new RegExp(suffix);if(reg.test(n)) {newArrs.push(n);}});if(newArrs.length > 0) {$('.auto-tip',cfg.parentNode).html('');$(".auto-tip",cfg.parentNode) && $(".auto-tip",cfg.parentNode).hasClass('hidden') &&$(".auto-tip",cfg.parentNode).removeClass('hidden');var html = '';for(var j = 0, jlen = newArrs.length; j < jlen; j++) {html += '<li class="p-index'+j+'">'+'<span class="output-num"></span><em class="em" data-html="'+newArrs[j]+'">'+newArrs[j]+'</em></li>';}$('.auto-tip',cfg.parentNode).html(html);// 给所有li添加属性 data-html$('.auto-tip li',cfg.parentNode).each(function(index,item){$('.output-num',item).html(prefix);!$('.output-num',item).hasClass(_config.inputValColor) && $('.output-num',item).addClass(_config.inputValColor);var emVal = $.trim($('.em',item).attr('data-html'));$(item).attr('data-html','');$(item).attr({'data-html':prefix + '' +emVal});});// 精确匹配到某项时候 让当前的索引等于初始值_cache.currentIndex = -1;_cache.oldIndex = -1;$('.auto-tip .output-num',cfg.parentNode).html(prefix);// 鼠标移到某一项li上面时候
                    self._itemHover(cfg.parentNode);// 点击对应的项时
                    self._executeClick(cfg.parentNode);}else {$(".auto-tip",cfg.parentNode) && !$(".auto-tip",cfg.parentNode).hasClass('hidden') && $(".auto-tip",cfg.parentNode).addClass('hidden');$('.auto-tip',cfg.parentNode).html('');}}},/** 鼠标移到某一项li上时*/_itemHover: function(parentNode) {var self = this,_config = self.config,_cache = self.cache;$('.auto-tip li',parentNode).hover(function(index,item) {!$(this).hasClass(_config.hoverBg) && $(this).addClass(_config.hoverBg);},function() {$(this).hasClass(_config.hoverBg) && $(this).removeClass(_config.hoverBg);});},/** 当输入框值为空时候 li项都删掉class hoverBg*/_removeBg: function(parentNode){var self = this,_config = self.config;$(".auto-tip li",parentNode).each(function(index,item){$(item).hasClass(_config.hoverBg) && $(item).removeClass(_config.hoverBg);});    },/*** 键盘上下键操作*/_keyUpAndDown: function(targetVal,e,parentNode) {var self = this,_cache = self.cache,_config = self.config;// 如果请求成功后 返回了数据(根据元素的长度来判断) 执行以下操作if($('.auto-tip' + ' li',parentNode) && $('.auto-tip' + ' li').length > 0) {var plen = $('.auto-tip' + ' li',parentNode).length,keyCode = e.keyCode;_cache.oldIndex = _cache.currentIndex;// 上移操作if(keyCode == 38) {if(_cache.currentIndex == -1) {_cache.currentIndex = plen - 1;}else {_cache.currentIndex = _cache.currentIndex - 1;if(_cache.currentIndex < 0) {_cache.currentIndex = plen - 1;}}if(_cache.currentIndex !== -1) {!$('.auto-tip .p-index'+_cache.currentIndex,parentNode).hasClass(_config.hoverBg) &&$('.auto-tip .p-index'+_cache.currentIndex,parentNode).addClass(_config.hoverBg).siblings().removeClass(_config.hoverBg);var curAttr = $('.auto-tip' + ' .p-index'+_cache.currentIndex,parentNode).attr('data-html');$(_config.targetCls,parentNode).val(curAttr);// 给隐藏域赋值
                        $(_config.hiddenCls,parentNode).val(curAttr);}}else if(keyCode == 40) { //下移操作if(_cache.currentIndex == plen - 1) {_cache.currentIndex = 0;}else {_cache.currentIndex++;if(_cache.currentIndex > plen - 1) {_cache.currentIndex = 0;}}if(_cache.currentIndex !== -1) {!$('.auto-tip .p-index'+_cache.currentIndex,parentNode).hasClass(_config.hoverBg) &&$('.auto-tip .p-index'+_cache.currentIndex,parentNode).addClass(_config.hoverBg).siblings().removeClass(_config.hoverBg);var curAttr = $('.auto-tip' + ' .p-index'+_cache.currentIndex,parentNode).attr('data-html');$(_config.targetCls,parentNode).val(curAttr);// 给隐藏域赋值
                        $(_config.hiddenCls,parentNode).val(curAttr);}}else if(keyCode == 13) { //回车操作var curVal = $('.auto-tip' + ' .p-index'+_cache.oldIndex,parentNode).attr('data-html');$(_config.targetCls,parentNode).val(curVal);// 给隐藏域赋值
                    $(_config.hiddenCls,parentNode).val(curVal);if(_config.isSelectHide) {!$(".auto-tip",parentNode).hasClass('hidden') && $(".auto-tip",parentNode).addClass('hidden');}_config.callback && $.isFunction(_config.callback) && _config.callback();_cache.currentIndex = -1;_cache.oldIndex = -1;}}},_keyCode: function(code) {var arrs = ['17','18','38','40','37','39','33','34','35','46','36','13','45','44','145','19','20','9'];for(var i = 0, ilen = arrs.length; i < ilen; i++) {if(code == arrs[i]) {return i;}}return -1;},/*** 当数据相同的时 点击对应的项时 返回数据*/_executeClick: function(parentNode) {var _self = this,_config = _self.config;$('.auto-tip' + ' li',parentNode).unbind('click');$('.auto-tip' + ' li',parentNode).bind('click',function(e){var dataAttr = $(this).attr('data-html');$(_config.targetCls,parentNode).val(dataAttr);if(_config.isSelectHide) {!$(".auto-tip",parentNode).hasClass('hidden') && $(".auto-tip",parentNode).addClass('hidden');}// 给隐藏域赋值
                  $(_config.hiddenCls,parentNode).val(dataAttr);_config.callback && $.isFunction(_config.callback) && _config.callback();});}
    };
    

  4. 此插件转自http://www.jb51.net/article/44288.htm

转载于:https://www.cnblogs.com/scrit/p/3676569.html

输入邮箱时自动提示邮箱后缀相关推荐

  1. php 智能输入提示插件,phph 输入邮箱时自动提示邮箱后缀 实现代码

    1.在html中输入邮箱的input要有自己的class,以及自己父元素的class.例如: // 初始化 $(function() { new EmailAutoComplete({ parentC ...

  2. Eclipse.自动提示--编写HTML/CSS/JS/JSP代码时自动提示的解决办法

    最近在做一个javaweb的项目,在eclipse中编写jsp代码时没有代码提示这个梗让人很头疼,之前一直写Java代码或者在Dreamweaver中写HTML代码时自动提示代码用起来特别爽,这突然间 ...

  3. 配置eclipse编写html/js/css/jsp/java时自动提示

    配置eclipse编写html/js/css/jsp/java时自动提示步骤: 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修 ...

  4. 输入文字时自动带空格解决办法

    输入文字时自动带空格解决办法: 把输入法中的全角改为半角,即: 把 改为

  5. c#//创建一个包含 10 个元素的 int 一维数组, 从键盘接收其值;当用户输入非法时,提示重新输入;暂时没有实现,。

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. 转】Eclipse编辑Spring配置文件xml时自动提示类class包名

    转自  http://bigdragon.iteye.com/blog/2396081 第一步,先查看下自己的Eclipse是什么版本,步骤如下: 1.1 点击Eclipse菜单'Help  -> ...

  7. 【adb】cmd命令行输入adb时始终提示adb为非内部命令

    问题描述: 1.安装好了adb 并且已经在计算机中配置好了环境变量,但是打开cmd命令时始终提示adb非内部命令 解决办法: 1.找到adb安装包 2.找到cmd命令位置(C:\Windows\Sys ...

  8. input文本框实现输入英文时自动触发事件,输入中文时要输入完成后才触发事件

    需求: 英文(英文输入法): 每输入一个字母都触发一次事件; 中文(拼音输入法): 输入完成后才触发事件,不是每打一个拼音就触发 实现: $(function(){var flag = true;$( ...

  9. JSP页面中实现使用taglib导入库时自动提示(JSTL 库安装)

    1.默认情况下,taglib导入标签库uri时,没有提示如下图: 所以我们需要导入安装jstl标签库 2.JSTL 库安装 1)下载jstl库 从Apache的标准标签库中下载的二进包(jakarta ...

最新文章

  1. 异常处理 课后作业2
  2. 关于java继承中父类方法可见性探讨
  3. 如何固化预训练模型的参数
  4. 操作系统复习--OS的运行机制和体系结构
  5. compizconfignbsp;nbsp;中的方框…
  6. 前端 JavaScript 之『防抖』的简单代码实现
  7. tidyverse —— forcats包
  8. 无线遥控器应用在安防防盗中有怎样作用?
  9. eclipse 中工程名出现红色感叹号问题 JRE System Library
  10. 后端向前端返回图片URL,并向后端传递base64格式URL
  11. maya导入abc动画_带你直观了解三维动画设计
  12. 51单片机DHT11温湿度传感器
  13. 前馈电容的作用-DCDC
  14. 计算机二级电子表格使用技巧36种,Excel表格的基本操作(精选36个技巧)
  15. 移动魔百盒CM311-1sa_ZG代工_S905L3A 安卓9.0 鸿蒙动画_线刷固件包
  16. Hive 高级篇(调优)
  17. 基于PIC18F458的CAN总线接口设计
  18. 2018年了,希望所有的程序员都能逃过这些梗……
  19. 距离2022年春节还有多少天?2022年春节倒计时天数在手机便签上设置
  20. Java 8 集合排序的 10 个姿势

热门文章

  1. 3秒搜电影,基于Pyqt5的简单电影搜索工具,会Python真牛逼!
  2. Qt 6.0中的主机开发平台和目标开发平台
  3. CAD图中如何插入Excel表格?
  4. Idea构建maven web项目
  5. Problem-solving,掌握这个技巧才能提升价值!
  6. SOA 基础知识简介
  7. 对数据库中的数据进行排序
  8. Visual Studio 创建C#项目,.sln和.suo文件说明
  9. 网络红人 赔本赚吆喝?炙手可热却苦水满腹图
  10. Windows XP怎么定时关机和开机