最后生成样子:

配置值:

  

* 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:;
top:;
height: 100%;
background-color: rgba(0,0,0,0.2);
#keyboard{
position: absolute;
bottom:;
width: 100%;
height: 880/@r;
left:;
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:;
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:;
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;
}
}
}
}

移动端键盘密码输入框插件(jquery用于支付密码)的更多相关文章

  1. 移动端下滑刷新插件(jQuery插件)

    由于在工作不能独自开发,而且为了给他们方便,自己写过不少的插件,不过今天刚好空闲,发出刚好完成的,移动端的下滑到底刷新插件.我不是很喜欢写插件给别人用,因为用起来自然是简单的,没什么难度,所以一起分享 ...

  2. 移动端多选插件-jquery

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 移动端触摸滑动插件Swiper

    移动端触摸滑动插件Swiper 04/02/2015 一.了解Swiper 目前移动端项目一般都需要具有触屏焦点图的效果,如果你也需要实现这一功能的话,Swiper是一个不错的选择. 1.他不需要加载 ...

  4. jQuery文件上传插件jQuery Upload File 有上传进度条

    jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...

  5. 基于zepto的移动端轻量级日期插件

    前言 做过移动Web开发的同学都知道,移动端日期选择是很常见的需求.在PC端,我们有很丰富的选择,比较出名的就有Mobiscroll和jQuery UI Datepicker.个人看来,这些插件存在的 ...

  6. 动态生成二维码插件 jquery.qrcode.js

    前段时间做项目,需要动态生成一个二维码,于是就在网上找了一下发现一个jquery插件jquery.qrcode.js,所以今天就简单说一下这个插件的使用: jquery.qrcode.js是依赖jqu ...

  7. 纯原生js移动端城市选择插件

    接着上一篇纯js移动端日期选择插件,话说今天同事又来咨询省市县联动的效果在移动端中如何实现,还是老样子,百度上一搜,诶~又全是基于jquery.zepto的,更加可恨的是大多数都是PC版的,三个sel ...

  8. jQuery响应式幻灯片插件jquery.glide.js(支持触摸&轻量级)

    找到一款好的幻灯片插件不容易,找到一款功能全并且使用很简单的幻灯片更不容易,今天为大家分享一款全能的幻灯片插件glide.js,也是我现在在使用的一款插件. jquery.glide.js是响应和触摸 ...

  9. jQuery懒加载插件jquery.lazyload.js使用说明实例

    jQuery懒加载插件jquery.lazyload.js使用说明实例很多网站都会用到‘图片懒加载’这种方式对网站进行优化,即延迟加载图片或符合某些条件才开始加载图片.懒加载原理:浏览器会自动对页面中 ...

随机推荐

  1. 微信小程序如何像vue一样在动态绑定类名

    微信小程序如何像vue一样在动态绑定类名 更新时间:2018年04月17日 14:08:44   这篇文章主要介绍了微信小程序如何像vue一样在动态绑定类名,文中给大家提到了vue与微信小程序的区别, ...

  2. Window10升级遇到大坑错误代码:0xc000000e完美解决方案

    昨天忽然升级了,然后并没有立即重启更新,因为但是正在工作所以等下班回到家后就是一直提示:文件:\Windows\system32\winload.efi 错误代码:0xc000000e!!! 如下图所 ...

  3. 网卡的 Ring Buffer 详解

    1. 网卡处理数据包流程 网卡处理网络数据流程图: 图片来自参考链接1 上图中虚线步骤的解释: DMA 将 NIC 接收的数据包逐个写入 sk_buff ,一个数据包可能占用多个 sk_buff , ...

  4. 初试PySnooper

    Pysooper是什么? 我们写代码会经常出现bug,有的人会使用断点调试器,但是设置这样的断点调试器是花时间的. 所以很多人会在可能出现错误的地方print打印来输出语句. Pysooper的作用有 ...

  5. 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

    想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一.Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉. ...

  6. cassandra读源码---Streaming

    前言 cassandra的很多过程需要网络传输模块,需要在各个节点直接发送文件.包括加入节点,删除节点引起的不同节点的负责ring环的key值发生了变化,导致sstable需要在各个节点中移动. 整体 ...

  7. HTTP 缓存相关

    网络中数据传输是很耗时的,数据要在漫长的路径中奔波,客户端在数据完整到达前只能等待.如果能够复用已经请求过的资源,势必会让整个页面加载高效许多.这可以通过合理地设置服务器的缓存,与浏览器的缓存机制配合 ...

  8. 【Python3爬虫】使用异步协程编写爬虫

    一.基本概念 进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.进程是操作系统动态执行的基本单元. 线程:一个进程中包含若干线程,当然至少有一个线程,线程可以利用进程所拥有的资源.线程 ...

  9. Python获取网络中的存活主机以及哪些主机是Linux

    这个脚本用于扫描网络中的存活主机,通常在CMDB中自动获取主机的时候用到. #!/usr/bin/env python # -*- coding: utf-8 -*- ""&quo ...

  10. 求解: Windows Phone XAML Controls 为什么是disable状态?

    问题 : 我在做一个windows phone 的App,显示一个web 返回来的data,现在想用控件ListView 去绑定这个Data,但是 为何我的VS2012 中的 ToolBox 的XAM ...