国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

jquery實現(xiàn)郵箱輸入自動提示功能:(二)

2024-04-27 15:01:39
字體:
供稿:網(wǎng)友

上篇文章寫到了一個不錯的jquery實現(xiàn)郵箱輸入自動提示功能,發(fā)現(xiàn)還有一個不錯的自動提示插件:

先展示結(jié)果如圖:

html代碼:

<center><h1>輸入郵箱試試!</h1><br /><div class="parentCls"><input type="text" class="inputElem"></div></center>

CSS代碼:

@charset "utf-8";* {    outline:none;    margin:0;    padding:0;    font-family:microsoft yahei;}ul, li {    list-style:none;}.inputElem {    width:198px;    height:22px;    line-height:22px;    border:1px solid #ccc;}.parentCls {    width:200px;    height:auto; margin:0 auto;}.auto-tip li {    width:100%;    text-align:left;    height:22px;    line-height:22px;    font-size:14px;}.auto-tip li.hoverBg {    background:#ddd;    cursor:pointer;}.auto-tip li em{font-style:normal;}.red {    color:#333;}.hidden {    display:none;}

jquery代碼:

/** * 郵箱自動提示插件 * @constructor EmailAutoComplete * @ options {object} 可配置項 */ function EmailAutoComplete(options) {        this.config = {        targetCls      :  '.inputElem',       // 目標input元素        parentCls      :  '.parentCls',       // 當前input元素的父級類        hiddenCls      :  '.hiddenCls',       // 當前input隱藏域         searchForm     :  '.jqtransformdone', //form表單        hoverBg        :  'hoverBg',          // 鼠標移上去的背景        inputValColor  :  'black',              // 輸入框輸入提示顏色        mailArr        : ["@QQ.com","@Gmail.com","@126.com","@163.com","@hotmail.com","@yahoo.com","@yahoo.com.cn","@live.com","@sohu.com","@sina.com"], //郵箱數(shù)組        isSelectHide   : true,                // 點擊下拉框 是否隱藏 默認為true        callback       : null                 // 點擊某一項回調(diào)函數(shù)    };    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');                    // 渲染下拉框內(nèi)容                    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');             });          }       });    },    /*     * 渲染下拉框提示內(nèi)容     * @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});            }                        // 給所有l(wèi)i添加屬性 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});            });            // 精確匹配內(nèi)容            self._accurateMate({target:cfg.target,parentNode:cfg.parentNode});            // 鼠標移到某一項li上面時候            self._itemHover(cfg.parentNode);                        // 點擊對應的項時            self._executeClick(cfg.parentNode);        }            },    /**     * 精確匹配某項內(nèi)容     */    _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);                                // 給所有l(wèi)i添加屬性 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;        // 如果請求成功后 返回了數(shù)據(jù)(根據(jù)元素的長度來判斷) 執(zhí)行以下操作        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;     },    /**      * 當數(shù)據(jù)相同的時 點擊對應的項時 返回數(shù)據(jù)      */     _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();                       });     }};
View Code
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉义县| 济源市| 彝良县| 克山县| 衡山县| 云浮市| 封开县| 囊谦县| 宁津县| 云林县| 浪卡子县| 来宾市| 孝义市| 巴彦淖尔市| 桂平市| 确山县| 庐江县| 英超| 兴仁县| 厦门市| 昌黎县| 洞口县| 林芝县| 大化| 神池县| 牟定县| 胶州市| 湘潭县| 临城县| 穆棱市| 高青县| 天台县| 江阴市| 休宁县| 长白| 闽侯县| 宜都市| 衢州市| 安阳县| 滦平县| 南投县|