zoukankan      html  css  js  c++  java
  • 移动端键盘密码输入框插件(jquery用于支付密码)

    最后生成样子:

    配置值:

      

    * back {function} 回调函数
    * msghtml {html} 自定义的html
    * title {string|object} 标题
    * {txt:标题,back:后退按钮}
    * 字符串则只有标题,有back字段对象则有后退按钮
    * sum {int} 输入的数字长度
    * close {string} 关闭按钮的class类(有默认类名)
    * cancel {string} 撤销重新输入按钮

    js

     function ztkeyboard(options){
        let create =  function(){
            this.options = {
                'msghtml':options.msghtml||'',
                'title':options.title||'',
                'sum':options.sum,
                'close':$(options.close)||'',
                'cancel':$(options.cancel)||'',
            };
            this.init();
            this.show();
            this.click();
            this.close();
            this.delete();
        };
        create.prototype.init = () => {
            let pd='';//密码长度
            let keybord = '';//键盘按键
            for(var i=0;i<options.sum;i++){
                pd += `<span class="pd fl" dataval="">*</span>`;
            };
            for(var i=0;i<9;i++){
                keybord+= `<div class="fl key"><a class="btn" href="javascript:;">${i+1}</a></div>`
            }
            $('body').append(
                `<div id="keyboard-box" style='display:none'>
                        <div id="keyboard">
                            <div class="title">
                                <em class="fl back iconfont ${options.close}"></em>
                                <span class="tit-txt">
                                    ${options.title}
                                </span>
                            </div>
                            <div class="con-box fn-clear">
                                ${pd}
                            </div>
                            ${options.msghtml}
                                <div class="keybord fn-clear">
                                    ${keybord}
                                    <div class="fl block"></div>
                                    <div class="fl key"><a class="btn" href="javascript:;">0</a></div>
                                    <div class="fl key close-keybord">
                                        <a href="javascript:;" class="iconfont ${options.cancel}"></a>
                                    </div>
                                </div>
                        </div>
                    </div>
                `
            );
            // 防止冒泡
            $('#keyboard-box').on('touchmove',function(e){
                e.preventDefault();
            })
        };
        // 键盘点击
        create.prototype.click = () => {
            $(".keybord .btn").on('click',function(){
                let index = $('.pd.fl.sure').index();
                let aim = $('.pd.fl.sure').length;
                if(index!=-1&&aim<`${options.sum}`){
                    $('.pd.fl').eq(aim).addClass('sure').attr('val',this.text);
                    if(aim==`${options.sum}`-1){
                        let password = '';
                        $('.pd.fl').each(function(i,datas){
                            password+=$(datas).attr('val');
                        })
                        create.prototype.back(password);//使用回调
                        $('#keyboard-box').fadeOut(500,function(){
                            $('#keyboard-box').remove();//清除元素
                        });
                    }
                }else if(index==-1){
                    $('.pd.fl').eq(0).addClass('sure').attr('val',this.text);
                }
            })
        };
        //撤销按钮
        create.prototype.delete = () => {
            $('.close-keybord .iconfont').on('click',function(){
                let aim = $('.pd.fl.sure').length;
                $('.pd.fl').eq(aim-1).removeClass('sure').attr('val','');
            })
        };
        // 显示对象
        create.prototype.show = () => {
            $('#keyboard-box').fadeIn(500);
        }
        // 取消对象创建
        create.prototype.close = () => {
            $('#keyboard .title .back').on('click',function(){
                $('#keyboard-box').fadeOut(100,function(){
                    $('#keyboard-box').remove();//清除元素
                });
            })
        },
        // 回调函数(传递输入的密码给前台)
        create.prototype.back = (password) => {
            typeof(options.back)==="function"?options.back(password):'undefined';
        };
        return new create();
     }

    html调用方法

            ztkeyboard({
                msghtml:'<a class="forget-pwd" href="">忘记密码?</a>',
                title:'请输入支付密码',
                close:'icon-houtui',
                sum:6,
                cancel:'icon-chexiao',
                back:function(data){
                    console.log(data)
                    console.log('提交支付密码表单')
                }
            })

    css(less)

    @r:75rem;
    @basecolor:#51d392;
    /* 方法库 */
    @import url("http://at.alicdn.com/t/font_903282_qp1m330oew.css");
    #keyboard-box{
        position: fixed;
        display: block;
        width: 100%;
        left: 0;
        top: 0;
        height: 100%;
        background-color: rgba(0,0,0,0.2);
        #keyboard{
            position: absolute;
            bottom: 0;
            width: 100%;
            height: 880/@r;
            left: 0;
            background-color: #fff;
            .title{
                line-height: 92/@r;
                border-bottom: 1px solid #cacaca;
                position: relative;
                box-sizing: border-box;
                .fl{
                    position: absolute;
                    font-size:34/@r;
                    color: #939395;
                    padding-left: 40/@r;
                }
                .tit-txt{
                    font-size: 38/@r;
                    color: #333;
                    text-align: center;
                    display: block;
    
                }
            }
            .con-box{
                margin: 48/@r 32/@r 0 32/@r;
                display:flex;
                height: 94/@r;
                border: 1px solid #a2a2a4;
                border-radius: 10/@r;
                .pd{
                    flex-grow: 1;
                    text-align: center;
                    font-size: 60/@r;
                    line-height: 94/@r;
                    color: #fff;
                }
                .pd:not(:last-child){
                    border-right: 1px solid #a2a2a4;
                }
                .pd.sure{
                    flex-grow: 1;
                    text-align: center;
                    font-size: 60/@r;
                    line-height: 94/@r;
                    color: #333;
                }
            }
            .forget-pwd{
                margin-top: 36/@r;
                margin-bottom: 150/@r;
                color: #0e8fe2;
                display: block;
                text-align: center;
            }
            .keybord{
                padding: 12/@r 12/@r 4/@r 12/@r;
                background-color: #d0d3da;
                .fl{
                    width: 33%;
                    height: 92/@r;
                    display: inline-block;
                    text-align: center;
                    color: #333;
                    padding-bottom: 12/@r;
                    line-height: 92/@r;
                    cursor: pointer;
                    font-size:40/@r;
                }
                .btn{
                    display: block;
                    border-radius: 10/@r;
                    height: 92/@r;
                    line-height: 92/@r;
                    background-color: #fff;
                    margin: 0 6/@r;
                    color: #333;
                    box-shadow: 0px 10/@r 10/@r #88878c;
                }
                .close-keybord .iconfont{
                    color: #333;
                    font-size:60/@r;
                    display: block;
                }
            }
        }
    }
  • 相关阅读:
    序列JSON数据和四种AJAX操作方式
    jquery.validate和jquery.form.js实现表单提交
    JQuery Validate使用总结1:
    HOWTO: Include Base64 Encoded Binary Image Data (data URI scheme) in Inline Cascading Style Sheets (CSS)(转)
    SharePoint 2007 使用4.0 .Net
    动态IP解决方案
    取MS CRM表单的URL
    从Iframe或新开的窗口访问MS CRM 2011(转)
    Toggle or Hidden MS CRM Tab
    Windows 2008下修改域用户密码
  • 原文地址:https://www.cnblogs.com/NB-JDzhou/p/9909486.html
Copyright © 2011-2022 走看看