输入框下拉提示效果

制作时间:13:30 - 15:45

平常在网站登录/注册时,填写邮箱或用户名时,都会有下拉的提示,直接点击你想要的就可以了。

效果图

html代码:

<body>
<div id="login">
    <div class="detail">
        <input type="text" id="input1" maxlength="128" placeholder="邮箱/会员帐号/手机号" autocomplete="off" name="loginname">
    </div>
    <div class="detail">
        <input type="password" maxlength="24" placeholder="请输入密码">
    </div>
    <ul id="suggest">
        <li class="note">请选择邮箱类型</li>
        <li email="" class="item"></li>
        <li email="@sina.com" class="item">@sina.com</li>
        <li email="@163.com" class="item">@163.com</li>
        <li email="@qq.com" class="item">@qq.com</li>
        <li email="@126.com" class="item">@126.com</li>
        <li email="@vip.sina.com" class="item">@vip.sina.com</li>
        <li email="@sina.cn" class="item">@sina.cn</li>
        <li email="@hotmail.com" class="item">@hotmail.com</li>
        <li email="@gmail.com" class="item">@gmail.com</li>
        <li email="@sohu.com" class="item">@sohu.com</li>
        <li email="@yahoo.cn" class="item">@yahoo.cn</li>
        <li email="@139.com" class="item">@139.com</li>
        <li email="@wo.com.cn" class="item">@wo.com.cn</li>
        <li email="@189.cn" class="item">@189.cn</li>
    </ul>
</div>
</body>
Ul元素

实现步骤:

同样是用面向对象的思想编写代码。

1. 建立框架

window.onload = function(){

    var s1 = new Suggest();

}
function Suggest(){

    this.oInput = document.getElementById("input1");
    this.oUl = document.getElementById("suggest");
    this.aLi = this.oUl.getElementsByTagName("li");

}
Suggest.prototype = {
      ....
}

2. 点击 input 框让 ul 元素显示出来,

创建四个方法:
init
toChange
showUl
toBlur


showUl: function(){

        this.oUl.style.display = "block";
},
toBlur: function(){

        var This = this;
        this.oInput.onblur = function(){
              This.oUl.style.display = "none";
        }

},

4. 当有输入时,下拉提示也同步显示数据

通过循环将 ul 中的每个 li元素的值改成手动输入的加上@后面下拉菜单上的值。

var value = this.oInput.value;
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;
            }
}

5. 当输入@后的匹配情况处理

6. 添加交互效果。

默认选中第一个。
给 li 元素添加onmouseover样式。

sel: function(inow){

        var This = this;
        this.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].onmouseover = function(){

                This.item();
                this.className = "active";
            }

}

其中的item方法.因为需要多次使用,所以单独编写一个方法。

item: function(){
        for(var i=1; i<this.aLi.length; i++){
            this.aLi[i].className = "item";
        }
}

7. 添加按键效果。

(1)给每个li添加onmousedown事件,实现点击选中效果。

this.aLi[i].onmousedown = function(){
        This.oInput.value = this.innerHTML;
}

(2)上下键控制移动。
(3)Enter键也可以选中。

输入框下拉提示效果结束

不积跬步无以至千里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,268评论 25 707
  • 第5章 菜单、按钮及导航 一、下拉菜单 小伙伴们注意,在Bootstrap框架中的下拉菜单组件是一个独立的组件,根...
    凛0_0阅读 4,919评论 0 66
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,982评论 4 60
  • 拖延一般是因为难或者烦,迟到和遗忘看似是意外,不过里面也通常隐藏着愤怒,二者倒有一点相似——都是在试图逃避。 今早...
    阿银老师阅读 158评论 0 0
  • 昨天晚上在朋友家蹭睡,晚上十点过的时候她拿了一本《重口味心理学》给我,她说:我觉得这本书还挺适合你的。我接过书翻开...
    败家的小姑娘阅读 458评论 0 0