返回顶部
首页 > 资讯 > 前端开发 > JavaScript >原生JS实现登录框邮箱提示
  • 589
分享到

原生JS实现登录框邮箱提示

2024-04-02 19:04:59 589人浏览 安东尼
摘要

本文分享一个由原生js实现的注册或登录时,输入邮箱时下拉提示效果,效果如下:   实现代码如下: <!DOCTYPE html> <html>

本文分享一个由原生js实现的注册或登录时,输入邮箱时下拉提示效果,效果如下:

 

实现代码如下:


<!DOCTYPE html>
<html>
 
<head>
    <meta Http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>原生JS实现登录框提示</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
 
        body {
            font: 12px/1.125 Arial, Helvetica, sans-serif;
        }
 
        li {
            list-style: none;
        }
 
        #login {
            width: 252px;
            height: 385px;
            
            background: url(images/0.jpg) no-repeat;
            margin: 20px auto;
            position: relative;
        }
 
        .detail {
            margin: 0 0 5px 30px;
            position: relative;
            top: 110px;
        }
 
        .detail input {
            color: #999999;
            border: 1px solid #74C8E5;
            border-radius: 3px 3px 3px 3px;
            height: 15px;
            line-height: 14px;
            padding: 8px 5px 7px;
            width: 184px;
        }
 
        #suggest {
            background: none repeat scroll 0 0 #FFFFFF;
            border: 1px solid #CCCCCC;
            left: 30px;
            margin: 0;
            overflow: hidden;
            padding: 0;
            position: absolute;
            text-align: left;
            top: 142px;
            visibility: visible;
            width: 194px;
            z-index: 1;
            display: none;
        }
 
        .note,
        .item {
            clear: both;
            color: #999999;
            cursor: pointer;
            font-size: 12px;
            height: 20px;
            line-height: 20px;
            list-style: none outside none;
            margin: 0 1px;
            padding: 0 5px;
            white-space: nowrap;
        }
 
        .active {
            white-space: nowrap;
            clear: both;
            color: rgb(153, 153, 153);
            cursor: pointer;
            font-size: 12px;
            height: 20px;
            line-height: 20px;
            list-style: none outside none;
            margin: 0pt 1px;
            padding: 0pt 5px;
            background: none repeat scroll 0% 0% rgb(232, 244, 252);
        }
    </style>
    <script>
 
        //页面加载完成时
        window.onload = function () {
            //创建构造函数
            var s1 = new Suggest();
            //初始化
            s1.init();
        };
 
        //构造函数
        function Suggest() {
            //获取用户名输入框
            this.oInput = document.getElementById('input1');
            //获取下拉列表提示框
            this.oUl = document.getElementById('suggest');
            //获取下拉列表项
            this.aLi = this.oUl.getElementsByTagName('li');
        }
 
        //为构造函数添加原型方法
        Suggest.prototype = {
            //初始化时
            init: function () {
                // 输入改变时
                this.toChange();
                // 光标移开时
                this.toBlur();
            },
            //边续触发改变时
            toChange: function () {
 
                //添加连续输入事件,并兼容各浏览器
                var ie = !-[1,];
                var This = this;
 
                if (ie) {
                    this.oInput.onpropertychange = function () {
                        //防止在IE下输入值为空的时候,触发下拉提示框
                        if (This.oInput.value == '') {
                            This.tips();
                            return;
                        }
                        //显示下拉列表框
                        This.thowUl();
                        //显示提示
                        This.tips();
                        //输入时的默认选中
                        This.sel(0);
                    };
                } else {
                    this.oInput.oninput = function () {
                        //显示下拉列表框
                        This.thowUl();
                        //显示提示
                        This.tips();
                        //输入时的默认选中
                        This.sel(0);
                    };
                }
            },
            //显示下拉列表框
            thowUl: 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) + '');
 
                //初始化显示下拉列表
                //防止清空输入后不显示下拉列表
                for (var i = 1; i < this.aLi.length; i++) {
                    this.aLi[i].style.display = 'block';
                    this.aLi[i].bBtn = true;
                }
 
                if (re.test(value)) {
                    //获取所有li的自定义属性(除开第一个)
                    for (var i = 1; i < this.aLi.length; i++) {
                        var oEmail = this.aLi[i].getAttribute('email');
                        //为选中的第1个li直接赋值
                        if (i == 1) {
                            //将输入值赋给li
                            this.aLi[i].innerHTML = value;
 
                        } else {
                            if (re.test(oEmail)) {
                                this.aLi[i].style.display = 'block';
                                this.aLi[i].bBtn = true;
                            } else {
                                this.aLi[i].style.display = 'none';
                                this.aLi[i].bBtn = false;
                            }
                        }
                    }
                } else {
                    //获取所有li的自定义属性(除开第一个)
                    for (var i = 1; i < this.aLi.length; i++) {
                        var oEmail = this.aLi[i].getAttribute('email');
                        //如果获取的oEmail值为空时,即为第一个时
                        if (!oEmail) {
                            //将输入值赋给li
                            this.aLi[i].innerHTML = value;
                        } else {
                            //li的内容为输入值加上其属性值
                            this.aLi[i].innerHTML = value + oEmail;
                        }
                    }
                }
            },
            //提示列表项选中方法
            sel: function (iNow) {
 
                var This = this;
                var arr = [];
 
                //选中一个提示后,重新输入时,将选中项还原为默认样式
                for (var i = 1; i < this.aLi.length; i++) {
                    this.aLi[i].className = 'item';
                    if (this.aLi[i].bBtn) {
                        arr.push(this.aLi[i]);
                    }
                }
 
                //当输入内容为空时
                if (this.oInput.value == '') {
                    //样式为item
                    arr[iNow].className = 'item';
                    //当输入内容不为空时
                } else {
                    //样式为active
                    arr[iNow].className = 'active';
                }
 
 
                //为所有的下拉提示添加鼠标移入事件
                for (var i = 1; i < arr.length; i++) {
                    arr[i].index = i;
                    //鼠标移入时
                    arr[i].onmouseover = function () {
                        //将所有li的样式还原为默认样式
                        for (var i = 1; i < This.aLi.length; i++) {
 
                            This.aLi[i].className = 'item';
                        }
                        //为当前选项添加样式为active
                        this.className = 'active';
                        iNow = this.index;
                    };
 
                    //鼠标点击时,将当前的提示选项内容替换为输入值
                    arr.onmousedown = function () {
                        This.oInput.value = this.innerHTML;
                    };
                }
 
                //添加键盘事件
                document.onkeydown = function (ev) {
                    //做事件兼容
                    var ev = ev || window.event;
                    //上
                    if (ev.keyCode == 38) {
                        if (iNow == 0) {
                            iNow = arr.length - 1;
                        } else {
                            iNow--;
                        }
                        for (var i = 1; i < This.aLi.length; i++) {
                            This.aLi[i].className = 'item';
                        }
                        arr[iNow].className = 'active';
                        //下 
                    } else if (ev.keyCode == 40) {
                        //当iNow为最后一个时,赋值为0
                        if (iNow == arr.length - 1) {
                            iNow = 0;
                        } else {
                            iNow++;
                        }
                        //清空所有li样式为默认样式
                        for (var i = 1; i < This.aLi.length; i++) {
                            This.aLi[i].className = 'item';
                        }
                        //为当前选项添加active样式
                        arr[iNow].className = 'active';
                        //回车
                    } else if (ev.keyCode == 13) {
                        //将当前的提示选项内容替换为输入值
                        This.oInput.value = arr[iNow].innerHTML;
                        //将光标移开输入框,关闭下拉列表项
                        This.oInput.blur();
                    }
                };
 
            }
        };
    </script>
</head>
 
<body>
    <div id="login">
 
        <div class="detail">
            <input id="input1" type="text" maxlength="128" placeholder="邮箱/会员帐号/手机号" autocomplete="off"
                node-type="loginname" class="name" tabindex="1" name="loginname">
        </div>
 
        <div class="detail">
            <input type="passWord" maxlength="24" placeholder="请输入密码" node-type="password" class="pass" tabindex="2"
                name="password">
        </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>
 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 原生JS实现登录框邮箱提示

本文链接: https://lsjlt.com/news/154724.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 原生JS实现登录框邮箱提示
    本文分享一个由原生JS实现的注册或登录时,输入邮箱时下拉提示效果,效果如下:   实现代码如下: <!DOCTYPE html> <html> ...
    99+
    2024-04-02
  • 原生JS实现可拖拽登录框
    本文分享一个用原生JS实现的可拖拽登录框,效果如下: 实现的代码如下: <!DOCTYPE html> <html> <head> ...
    99+
    2024-04-02
  • js实现登录弹框
    本文实例为大家分享了js实现登录弹框,供大家参考,具体内容如下 html: <body>     <div id="M"><!--用div将所有东西套...
    99+
    2024-04-02
  • 原生JS实现特效留言框
    本文给大家分享一个用原生JS实现的特效留言框,效果如下: 实现代码如下,欢迎大家复制粘贴。 <!DOCTYPE html> <html> <h...
    99+
    2024-04-02
  • Android实现登录邮箱的自动补全功能
    本文实例为大家分享了Android登录邮箱自动补全功能的实现方法,供大家参考,具体内容如下 效果: 实现原理: 1、继承重写简单控件AutoCompleteTextView ...
    99+
    2022-06-06
    自动 Android
  • python+opencv+selenium如何实现自动化登录邮箱
    这篇文章主要为大家展示了“python+opencv+selenium如何实现自动化登录邮箱”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python+opencv+selenium如何实现自动...
    99+
    2023-06-20
  • JS原生双栏穿梭选择框的实现示例
    目录何时使用结构分支代码何时使用 用直观的方式在两栏中移动元素,完成选择行为。 选择一个或以上的选项后,点击对应的方向键,可以把选中的选项移动到另一栏。 其中,左边一栏为 sourc...
    99+
    2024-04-02
  • 原生js提示框并自动关闭(手工关闭)
    js提示框,n秒后自动关闭,多用于简单的提示,无需人工参与,例如复制内容的时候提示复制成功或者后台提交信息的返回界面都可以用这个 JavaScript自动关闭窗口 <!DOCT...
    99+
    2023-05-17
    js提示框 自动关闭 手动关闭
  • 原生JS实现目录滚动特效
    分享一个用原生JS实现的文字滚动效果,这种效果通常用在网页中一些局部展示信息,如新闻、动态、充值记录等,效果如下: 实现代码如下: <!DOCTYPE html> ...
    99+
    2024-04-02
  • js实现点击弹窗弹出登录框
    本文实例为大家分享了js实现点击弹窗弹出登录框的具体代码,供大家参考,具体内容如下 1 图片预览 2 index.html代码 <!DOCTYPE html> &l...
    99+
    2024-04-02
  • js怎么实现百度搜索提示框
    小编给大家分享一下js怎么实现百度搜索提示框,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果如下所示话不多说,请看代码:<...
    99+
    2024-04-02
  • js如何实现登录框鼠标拖拽效果
    小编给大家分享一下js如何实现登录框鼠标拖拽效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:代码如下:<!DOC...
    99+
    2024-04-02
  • 原生js实现放大镜的示例分析
    这篇文章主要介绍原生js实现放大镜的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!原理:左边阴影在左边图片上从左到右移动的时候,右边大框也在右边大图片上从左到右移动(尽管在视...
    99+
    2024-04-02
  • spring-security关闭登录框的实现示例
    事情要从同事的一个项目说起,项目中需要集成公司的单点登录系统,但是无论如何都无法跳转到正常的登录页面。相反,却始终跳转到另外一个登录页面。 但是代码却非常简单,简化一下 @Co...
    99+
    2024-04-02
  • 基于原生CSS+JS实现一个标签输入框
    目录一、自适应输入框布局二、输入框占位提示三、标签的输入与删除四、选择框架还是原生最近在项目中需要做一个标签输入框,还挺实用的,演示效果如下: 主要交互要求是这样的: 点击输入框可...
    99+
    2024-04-02
  • 原生JS实现拖拽排序的示例代码
    目录HTML中的拖拽事件(drag & drop)Coding完整代码说到拖拽,应用场景不可谓不多。无论是打开电脑还是手机,第一眼望去的界面都是可拖拽的,靠拖拽实现...
    99+
    2022-12-08
    JS实现拖拽排序 JS拖拽排序 JS 排序
  • 原生JavaScript实现模态框的示例代码
    目录原生js封装模态框示例效果代码原生js封装模态框 最近需要一个模态框,然后一种是提示类的,一种是确认类型,我就想着再网上找一个然后修改一下,结果找到了,但是不深特别合适,我再次基...
    99+
    2024-04-02
  • 如何用JS实现实时弹出新消息提示框并有提示音响
    这篇“如何用JS实现实时弹出新消息提示框并有提示音响”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用JS实现实时弹出新消...
    99+
    2023-07-04
  • php登录失败页面提示怎么实现
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php登录失败页面提示怎么实现?PHP实现的登录页面信息提示功能示例具体如下:login.php:<!DOCTYPE html> <html>...
    99+
    2022-11-19
    登录失败 php
  • php登录失败页面提示如何实现
    本篇内容介绍了“php登录失败页面提示如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php实现登录失败页面提示的方法:1、创建log...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作