美文网首页
用HTML5实现微信密码输入框

用HTML5实现微信密码输入框

作者: 月_关 | 来源:发表于2019-08-08 23:32 被阅读0次
    效果图

    简单说一下原理 :

    1、先创建一个input输入框,定位在在六个小input上面,设置css opacity: 0

    2、监听输入隐藏input输入的值,循环显示在6个input里面

    3、光标是一个gif图模拟的

    上代码

    <!DOCTYPE html>

    <html>

    <head>

    <title></title>

    <script type="text/javascript" src="https://cdn.staticfile.org/jquery/2.0.3/jquery.min.js"></script>

    <style type="text/css">

    * {

    box-sizing: border-box;

    }

    .box {

    width: 380px;

    height: 50px;

    background: #999;

    position: relative;

    }

    .inp {

    position: absolute;

    z-index: 10;

    top: 0;

    left: 0;

    width: 380px;

    height: 50px;

    opacity: 0;

    }

    .input-list-box {

    position: relative;

    z-index: 8;

    width: 100%;

    display: flex;

    justify-content: space-between;

    }

    .input-list-box input {

    width: 50px;

    height: 50px;

    line-height: 50px;

    text-align: center;

    font-size: 20px;

    font-weight: 800px;

    border: 1px solid #999;

    }

    .input-active {

    position: absolute;

    z-index:9;

    top: 5px;

    left: 4px;

    width: 3px;

    height: 40px;

    }

    .input-active img {

    width: 1px;

    height: 100%;

    }

    </style>

    </head>

    <body>

    <div>

    <div>请在下方输入6位数字</div>

    <div class="box">

        <input type="tel" maxlength="6" class="inp"/>

        <div class="input-list-box">

            <input type="text" >

            <input type="text" >

            <input type="text" >

            <input type="text" >

            <input type="text" >

            <input type="text" >

        </div>

        <div class="input-active">

        <img src="https://t.alipayobjects.com/images/rmsweb/T1nYJhXalXXXXXXXXX.gif">

        </div>

      </div>

    </div>

    </body>

    <script type="text/javascript">

    $('.inp').focus()

    $('.inp').focus(function(){

    var $input = $(".input-list-box input")

    var pwd = $(this).val().trim()

      var i = pwd.length

      if (i >= 6) {

        $('.input-active').css('display', 'none')

        }else {

        $('.input-active').css('display', 'block')

        $('.input-active').css('left',$input.eq(i).offset().left + 'px')

        }

    })

    $(".inp").blur(function(){

      $('.input-active').css('display', 'none')

    });

    $(".inp").on("input", function() {

            var $input = $(".input-list-box input")

            if( /^[0-9]*$/.test($(this).val()) ){//有值只能是数字

              var pwd = $(this).val().trim()

              for (var i = 0; i < pwd.length; i++) {

                $input.eq(i).val(pwd[i])

                }

                if (i >= 6) {

            $('.input-active').css('display', 'none')

            }else {

            $('.input-active').css('display', 'block')

            $('.input-active').css('left',$input.eq(i).offset().left + 'px')

            }

                $input.each(function() {//将有值的当前input后的所有input清空

                var index = $(this).index()

                if (index >= pwd.length) {

                  $(this).val("")

                }

            });

            }else{//清除val中的非数字,返回纯number的value

            var arr = $(this).val().match(/[0-9]/g)

            if ( !arr ) { //当第一个输入的是非数值 清空输入

            $(this).val('')

            return

            }

            // 找到数组中最后一个数值得下标

            var num = $(this).val().lastIndexOf(arr[arr.length-1]) + 1

            $(this).val($(this).val().slice(0, num))

            }

        });

    </script>

    相关文章

      网友评论

          本文标题:用HTML5实现微信密码输入框

          本文链接:https://www.haomeiwen.com/subject/imsqjctx.html