zoukankan      html  css  js  c++  java
  • 如何实现密码输入框focus状态弹出提示信息

    一、密码输入提示框样式实现

    效果图如下:

    源码如下:

    <html>
    <style type="text/css">
    *{
        padding: 0;
        margin:0;
    }
    .pwd_content{
        position:relative;
        top:100px;
    }
    .pwd_tips{
        width: 140px;
        position: absolute;
        left: 230px;
        top: -20px;
        border: 1px solid #c2c2c2;
        padding: 5px;
        font-size: 12px;
        color:#666;
        font-weight: normal;
        display:none;
    }
    .arrow1, .arrow2{
        position: absolute;
        left: -13px;
        top: 25px;
        border-top: 6px transparent dashed;
        border-left: 6px transparent dashed;
        border-bottom: 6px transparent dashed;
        border-right: 6px solid #c2c2c2;
    }
    
    .arrow2{
               left: -12px;/*这里很重要,相当于比原来的三角右移了一个像素*/
                border-right: 6px white solid;/*用白色的三角覆盖掉灰色的三角*/
     }
    
    .pwd_tips .pwd_tip1, .pwd_tips .pwd_tip2{
        padding-left:16px;
    }
    
    .pwd_tips .point{
        position: absolute;
        left: 4px;
        margin-top: 4px;
        font-size: 40px;
        line-height: 12px;
    }
    </style>
    <body>
        <div  class="pwd_content">
            <label for="passwd">密码:</label>
            <input type="password" name="passwd" id="passwd">
            <div  class="pwd_tips" id="pwd_tips">
                <span class="arrow1"></span>
                <span class="arrow2"></span>
                <p class="pwd_tip1"><span class="point">· </span>密码长度至少8个字符</p>
                <p class="pwd_tip2"><span class="point">· </span>包含数字,大小写字母和特殊字符其中的三种</p>
            </div>
        </div>
    </body>
    <script type="text/javascript">
        function passwd_init(){
            document.getElementById("passwd").addEventListener("focus", function(){
                document.getElementById("pwd_tips").style.display =  "block";
            })
            document.getElementById("passwd").addEventListener("blur", function(){
                document.getElementById("pwd_tips").style.display =  "none";
            })
        }
        passwd_init();
    </script>
    </html>

    空心箭头实现参考:用css制作空心箭头(上下左右各个方向均有)

    注:关于文字换行对齐的实现的另一种方法:效果图:

    代码实现:

    <html>
    <head>
    <style>
        .point{
            display:inline-block;
            width:5%;
            margin-top: -6px;
        }
        .cont{
            display:inline-block;
            width:95%;
            vertical-align:top;
        }
    </style>
    </head>
    <body>
        <div style="300px;border:1px solid #ff5500;">
            <p><span class="point">.</span><span class="cont">密码长度至少8个字符</span></p>
            <p><span class="point">.</span><span class="cont">包含数字,大小写字母和特殊字符其中的三种</span></p>
        </div>
    </body>
    </html>
    View Code

     关键点:设置.cont的样式为inline-block,行内块级是使文字与点同一行且文字作为一个整体靠左对齐的关键。若按默认inline则第二行的文字会跟点对齐。

    二、一般密码校验及报错实现

    功能点:

    1.密码格式要求:

    2.用户点击提交时进行校验,若首次输入的密码格式不对,显示错误提示同时明文显示密码即可,不再进行两次密码的一致性校验。

    3.若第一遍输入的密码格式正确,再进行判断两次输入的密码是否一致,不一致则报错同时明文显示密码。

    样式效果图:

    正在输入密码时:

    正在输入确认密码时:

    密码格式不对时,单击submit的响应样式:

    两次密码不一样时,单击submit的响应样式:

    源码实现:

    <html>
    <style type="text/css">
    *{
        padding: 0;
        margin:0;
    }
    label{
        display:inline-block;
    }
    .content{
        position:relative;
        top:100px;
    }
    .pwd_content{
        padding-top:20px;
        padding-bottom: 20px;
    }
    .pwd_tips{
        width: 140px;
        position: absolute;
        left: 260px;
            top: 22px;
        border: 1px solid #c2c2c2;
        padding: 5px;
        font-size: 12px;
        color:#666;
        font-weight: normal;
        display:none;
    }
    .arrow1, .arrow2{
        position: absolute;
        left: -13px;
        top: 25px;
        border-top: 6px transparent dashed;
        border-left: 6px transparent dashed;
        border-bottom: 6px transparent dashed;
        border-right: 6px solid #c2c2c2;
    }
    
    .arrow2{
               left: -12px;/*这里很重要,相当于比原来的三角右移了一个像素*/
                border-right: 6px white solid;/*用白色的三角覆盖掉灰色的三角*/
     }
    
    .pwd_tips .pwd_tip1, .pwd_tips .pwd_tip2{
        padding-left:16px;
    }
    
    .pwd_tips .point{
        position: absolute;
        left: 4px;
        margin-top: 4px;
        font-size: 40px;
        line-height: 12px;
    }
    
    label.error {
        color: #e81123;
        display: inline-block;
        margin-left: 10px;
     }
    
    
    </style>
    <body>
        <div class="content">
            <div>
                        <label style="80px;" for="updateType0">用户名</label>
                        <input type="text"  value="Administrator" readonly/>
                  </div>
            <div  class="pwd_content">
                <label style="80px;" for="passwd">密码:</label>
                <input type="password" name="passwd" id="passwd">
                <label for="passwd" class="error" style="display:none">密码不符合规范</label>
                <div  class="pwd_tips" id="pwd_tips">
                    <span class="arrow1"></span>
                    <span class="arrow2"></span>
                    <p class="pwd_tip1"><span class="point">· </span>密码长度至少8个字符</p>
                    <p class="pwd_tip2"><span class="point">· </span>包含数字,大小写字母和特殊字符其中的三种</p>
                </div>
            </div>
            <div>
                        <label style="80px;" for="passwd_confirm">确认密码:</label>
                        <input type="password" name="passwd_confirm" id="passwd_confirm">
                        <label for="passwd_confirm" class="error" style="display:none">两次密码不一致</label>
                    </div>
                    <button style="margin-top:20px;" id="submit">submit</button>
        </div>
    </body>
    <script src="js/libs/jquery.min.js"></script>
    <script type="text/javascript">
        String.prototype.isValidPW = function(){   
        // First, check for at least 8 characters
        if (this.length < 8) return false;
    
        // next, check that we have at least 3 matches
        var re = [/d/, /[A-Z]/, /[a-z]/, /[!@#$%&/=?_.,:;-]/], m = 0;
        for (var r = 0; r < re.length; r++){
            if ((this.match(re[r]) || []).length > 0) m++;
        }
        return m >= 3;
        };
    
        function passwd_init(){
            document.getElementById("passwd").addEventListener("focus", function(){
                document.getElementById("pwd_tips").style.display =  "block";
            })
            document.getElementById("passwd").addEventListener("blur", function(){
                document.getElementById("pwd_tips").style.display =  "none";
            })
        }
        passwd_init();
        function passwd_check() { 
            if(!$("#passwd").val().isValidPW()){
                $("label[for='passwd'].error").show();
                $("#passwd").attr('type',"text");
                document.getElementById("passwd").addEventListener("focus", function(){
                    $("label[for='passwd'].error").hide();
                    $("#passwd").attr('type',"password");     
                })
                return false;
            }
            if($("#passwd").val().trim() != $("#passwd_confirm").val().trim()) {
                $("label[for='passwd_confirm'].error").show();
                $("#passwd").attr('type',"text");
                $("#passwd_confirm").attr('type',"text");
                document.getElementById("passwd_confirm").addEventListener("focus", function(){
                    $("label[for='passwd_confirm'].error").hide();  
                    $("#passwd").attr('type',"password");
                    $("#passwd_confirm").attr('type',"password");   
                })
                return false;
            }
            return true;
        }
        document.getElementById("submit").addEventListener("click", passwd_check);
    
    </script>
    </html>
  • 相关阅读:
    解析ASP.NET Mvc开发之EF延迟加载 分类: ASP.NET 2014-01-04 01:29 4017人阅读 评论(1) 收藏
    解析ASP.NET Mvc开发之查询数据实例 分类: ASP.NET 2014-01-02 01:27 5788人阅读 评论(3) 收藏
    解析ASP.NET Mvc开发之查询数据实例
    从明源动力到创新工场这一路走来
    从明源动力到创新工场这一路走来 分类: 程序人生 2013-12-29 07:37 2532人阅读 评论(2) 收藏
    解析ASP.NET WebForm和Mvc开发的区别 分类: ASP.NET 2013-12-29 01:59 11738人阅读 评论(5) 收藏
    解析ASP.NET WebForm和Mvc开发的区别
    MySQL--索引
    MySQL--存储过程
    MySQL--自定义函数
  • 原文地址:https://www.cnblogs.com/yanayana/p/6858041.html
Copyright © 2011-2022 走看看