亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

一個仿微博登陸郵箱提示框js開發案例

2019-11-20 09:23:00
字體:
來源:轉載
供稿:網友

最近在好好的研究JS,通過一個仿郵箱登錄提示框的案例加深下對面向對象的理解!啥都別說,先上圖:

功能:實現正則匹配顯示相符的內容、鍵盤事件、鼠標事件

簡單布局:

<div id="login">  <h2>仿微博登錄</h2>  <div class="detail">    <input type="text" placeholder='郵箱/會員賬號/手機號' autocomplete='off' class='name' id='nameInput' maxlength='18'>  </div>  <div class="detail">    <input type="password" placeholder='請輸入密碼' autocomplete='off' class='password'>  </div>  <ul id='suggest'>    <li class="note">請選擇郵箱類型:</li>    <li class="item" email=""></li>    <li class="item" email="@sina.com">@sina.com</li>    <li class="item" email="@163.com">@163.com</li>    <li class="item" email="@qq.com">@qq.com</li>    <li class="item" email="@126.com">@126.com</li>    <li class="item" email="@sina.cn">@sina.cn</li>    <li class="item" email="@139.com">@139.com</li>  </ul></div>

CSS代碼:

body,ul,li,h2{margin:0;padding:0;color:#ccc;}ul{list-style-type: none;}#login{width:250px;background:#fff;border:1px solid #ccc;text-align: center;margin:10px auto;position:relative;}#login h2{background:#FA7D3C;color:#fff;line-height:40px; }.detail{}.detail input{width:220px;height:30px;margin:10px auto;border:1px solid #ccc;padding-left:5px;}#suggest{width:225px;height:auto;background:#fff;border:1px solid #ccc;position:absolute;top:84px;left:12px;display: none;}#suggest li{width:225px;height:25px;line-height:25px;text-align: left;cursor: pointer;}#suggest li.note{color:#989090;}#suggest li.active{background:#eee;}

JS代碼:

window.onload=function(){  var s1=new Suggest();  s1.init();};function Suggest(){  this.oInput=document.getElementById('nameInput');  this.oUl=document.getElementById('suggest');  this.aLi=this.oUl.getElementsByTagName('li');}Suggest.prototype={  init:function(){    this.toChange();    this.toBlur();  },  toChange:function(){    //ie:onpropertychange    //標準:oninput    /*判斷IE瀏覽器最短方法:var isIE = !-[1,]*/    var ie=!-[1,];    //存this指向,this指向問題    var This=this;    if(ie){      this.oInput.onpropertychange=function(){        if(This.oInput.value==''){          This.tips();//?解決ie下空值時li新增內容不置空情況          return;        }        This.showUl();        This.tips();        This.sel(1);//選中第一條      };    }else{      this.oInput.oninput=function(){        This.showUl();        This.tips();        This.sel(1);//選中第一條      }    }  },  showUl:function(){    this.oUl.style.display='block';  },  toBlur:function(){    var This=this;    this.oInput.onblur=function(){      This.oUl.style.display='none';    }  },  tips:function(){    var value=this.oInput.value;    //正則匹配    var re=new RegExp('@'+value.substring(value.indexOf('@')+1)+'');    // console.log(re);    //bug修復:全部內容一次性清空仍可出現提示    for(var i=1;i<this.aLi.length;i++){      this.aLi[i].style.display='block';    }    if(re.test(value)){//匹配@輸入后情況      for(var i=1;i<this.aLi.length;i++){        var oEmail=this.aLi[i].getAttribute('email');        if(i==1){          this.aLi[i].innerHTML=value;        }else{          if(re.test(oEmail)){//匹配項顯示,否則隱藏            this.aLi[i].style.display='block';          }else{            this.aLi[i].style.display='none';          }        }      }    }else{//未輸入@之前      for(var i=1;i<this.aLi.length;i++){        var oEmail=this.aLi[i].getAttribute('email');        if(!oEmail){          this.aLi[i].innerHTML=value;        }else{          this.aLi[i].innerHTML=value+oEmail;        }      }    }  },  sel:function(iNow){//傳入當前索引    var This=this;    //每次改變重新設置類型,不會重復    for(var i=1;i<this.aLi.length;i++){      this.aLi[i].className='item';    }    if(this.oInput.value==''){      this.aLi[iNow].className='item';    }else{      this.aLi[iNow].className='active';    }    for(var i=1;i<this.aLi.length;i++){      this.aLi[i].index=i;      this.aLi[i].onmouseover=function(){        for(var i=1;i<This.aLi.length;i++){          This.aLi[i].className='item';        }        this.className='active';        iNow=this.index;//當前索引      };      //鼠標點擊事件:      this.aLi[i].onmousedown=function(){        This.oInput.value=this.innerHTML;      }    }    //鍵盤事件:    this.oInput.onkeydown=function(e){      var e=e||window.event;      if(e.keyCode==38){//上        if(iNow==1){          iNow=This.aLi.length-1;        }else{          iNow--;        }        for(var i=1;i<This.aLi.length;i++){          This.aLi[i].className='item';        }        This.aLi[iNow].className='active';      }else if(e.keyCode==40){//下        if(iNow==This.aLi.length-1){          iNow=1;        }else{          iNow++;        }        for(var i=1;i<This.aLi.length;i++){          This.aLi[i].className='item';        }        This.aLi[iNow].className='active';      }else if(e.keyCode==13){//回車        This.oInput.value=This.aLi[iNow].innerHTML;        This.oInput.blur();//回車后觸發blur事件隱藏ul層      }    }  }}

需要處理好多個分支情況,處理好小細節,也感覺面向對象中比較常遇到是this指向的問題,通過這個案例好好地理解了下this。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品小视频在线观看| 午夜精品久久久久久99热| 亚洲国产精品99| 亚洲小视频在线| 亚洲xxxx18| 日日噜噜噜夜夜爽亚洲精品| 精品日本美女福利在线观看| 深夜福利国产精品| 欧美高清第一页| 国产精品视频白浆免费视频| 久久人人爽人人爽人人片av高请| 国产福利精品视频| 亚洲精品国产suv| 在线观看精品国产视频| 92看片淫黄大片欧美看国产片| 亚洲毛茸茸少妇高潮呻吟| 久久全球大尺度高清视频| 国产精品视频区| 成人黄色影片在线| 日韩中文在线不卡| 国精产品一区一区三区有限在线| 亚洲欧美日韩图片| 国产精品免费观看在线| 7777免费精品视频| 国产精品一区二区av影院萌芽| 亚洲激情自拍图| 亚洲人成网站999久久久综合| 欧美激情2020午夜免费观看| 日韩精品亚洲精品| 欧美xxxx综合视频| 青青久久aⅴ北条麻妃| 国产91精品网站| 日韩中文字幕精品| 在线播放日韩欧美| 成人高清视频观看www| 美日韩精品免费观看视频| 亚洲美女福利视频网站| 精品亚洲男同gayvideo网站| 日韩欧美a级成人黄色| 欧美大胆在线视频| 日本a级片电影一区二区| 亚洲品质视频自拍网| 精品久久久久久亚洲精品| 97久久超碰福利国产精品…| 亚洲国产成人久久| 亚洲经典中文字幕| 日韩在线观看免费全集电视剧网站| 国产精品激情av电影在线观看| 97久久精品人搡人人玩| 91在线视频精品| 亚洲综合社区网| 欧洲美女免费图片一区| 懂色av中文一区二区三区天美| 精品国产欧美一区二区五十路| 国产成人综合久久| 97在线精品国自产拍中文| 亚洲无限av看| 久久亚洲精品一区| 国产精品久久久久一区二区| 91视频-88av| 日韩一区二区久久久| 亚洲日本中文字幕| 91欧美日韩一区| 久久久伊人欧美| 精品夜色国产国偷在线| 国产69精品久久久久9| 国产盗摄xxxx视频xxx69| …久久精品99久久香蕉国产| 成人有码视频在线播放| 欧美在线影院在线视频| 91精品国产综合久久久久久蜜臀| 日韩小视频在线| 久久久精品国产一区二区| 91国偷自产一区二区三区的观看方式| 国产一区二区久久精品| 亚洲free嫩bbb| 亚洲欧美国产精品va在线观看| 欧美高清性猛交| 欧美在线亚洲在线| 欧美性感美女h网站在线观看免费| 成人444kkkk在线观看| 欧美成人性生活| 亚洲第五色综合网| 欧美视频国产精品| 日韩动漫免费观看电视剧高清| 欧美亚洲在线观看| 在线视频欧美日韩| 91久久久久久国产精品| 精品亚洲一区二区三区在线播放| 97在线看免费观看视频在线观看| 国产主播喷水一区二区| 中日韩午夜理伦电影免费| 亚洲天堂免费在线| 欧美激情视频一区二区三区不卡| 91亚洲精品在线观看| 日韩成人网免费视频| 国产精品久久久久免费a∨大胸| 在线亚洲午夜片av大片| 日本不卡高字幕在线2019| 国产精品日本精品| 亚洲色图第一页| 国产精品91在线观看| 亚洲久久久久久久久久| 成人久久一区二区三区| 国产午夜精品免费一区二区三区| 欧美洲成人男女午夜视频| 国产精品h在线观看| 久久久久久久久久久av| 欧美中文字幕视频在线观看| 久久久久久久久久国产| 2021国产精品视频| 国产精品吊钟奶在线| 青青久久av北条麻妃海外网| 国产99久久精品一区二区 夜夜躁日日躁| 日韩av免费看| 精品一区二区三区四区在线| 亚洲欧美中文在线视频| 伊人久久五月天| 国产欧美亚洲精品| 国产剧情日韩欧美| 尤物九九久久国产精品的特点| 欧美日韩在线免费观看| 国产精品视频久| 国产亚洲视频在线| 亚洲男人av电影| 日韩av色综合| 日韩美女视频免费看| 亚洲美女av在线| 欧美性极品xxxx做受| 欧美日韩一区二区三区在线免费观看| 日韩成人网免费视频| 色先锋资源久久综合5566| 欧美中文字幕在线播放| 亚洲毛片在线观看.| 欧美高清视频免费观看| 欧美最顶级丰满的aⅴ艳星| 国产亚洲欧美aaaa| 亚洲成人网av| 国产精品678| 国产精品夜色7777狼人| 午夜精品一区二区三区在线视| 26uuu亚洲国产精品| 亚洲欧美在线播放| 亚洲性视频网站| 91日韩在线播放| 久久久精品国产一区二区| 亚洲欧美国产精品va在线观看| 久久91亚洲人成电影网站| 2019中文字幕在线免费观看| 日本三级韩国三级久久| 国产偷国产偷亚洲清高网站| 亚洲天堂成人在线视频| 国产综合在线观看视频| 亚洲欧美在线播放| 亚洲无限乱码一二三四麻| 国产精品视频精品视频| 揄拍成人国产精品视频| 日韩在线视频国产| 亚洲另类欧美自拍| 日韩亚洲一区二区| 亚洲人在线视频| 久久久影视精品| 浅井舞香一区二区| 欧美高清无遮挡|