JavaScript仿支付宝密码输入框


Posted in Javascript onDecember 29, 2015

现在很多时候大家付款的场景都是在手机上面,而随着H5页面的开发变得越来越方便,很多场景也从客户端搬到了浏览器中,其中支付这个场景就很自然的被放在了浏览器中。那么这样的输入框大家一定不会陌生吧:

JavaScript仿支付宝密码输入框

那么今天我就用JavaScript代码来实现这个效果吧,那么首先介绍一下整个的思路,首先我们先将确定输入密码的位数,我的需求是5位,那么就用一个div标签包住5个input标签。

并且给这个5个input设置display: inline-block 属性,同时用<!- ->来消除元素直接的margin值,那么HTML就是如下的样子:

<div class="input"> 
<input type="tel" placeholder="随" maxlength=""><!- 
-><input type="tel" placeholder="机" maxlength=""><!- 
-><input type="tel" placeholder="" maxlength=""><!- 
-><input type="tel" placeholder="位" maxlength=""><!- 
-><input type="tel" placeholder="数" maxlength=""> 
</div>

在代码中我们需要设置最多输入的位数,不然就不像了嘛~当然为了在移动端输入的时候能唤起数字键盘来,我们也需要设置type="tel"。那么接下来就是CSS样式的代码了,这里我就简单的贴出一些代码,具体高仿的像不像其实就是这里了~

input { 
display: inline-block; 
&:last-child { 
border-right: px solid #; 
} 
input { 
border-top: px solid #; 
border-bottom: px solid #; 
border-left: px solid #; 
width: px; 
height: px; 
outline:none; 
font-family: inherit; 
font-size: px; 
font-weight: inherit; 
text-align: center; 
line-height: px; 
color: #ccc; 
background: rgba(,,,); 
} 
}

那么接下来就是最关键的JavaScript部分了,

/** 
* 模拟支付宝的密码输入形式 
*/ 
(function (window, document) { 
var active = , 
inputBtn = document.querySelectorAll('input'); 
for (var i = ; i < inputBtn.length; i++) { 
inputBtn[i].addEventListener('click', function () { 
inputBtn[active].focus(); 
}, false); 
inputBtn[i].addEventListener('focus', function () { 
this.addEventListener('keyup', listenKeyUp, false); 
}, false); 
inputBtn[i].addEventListener('blur', function () { 
this.removeEventListener('keyup', listenKeyUp, false); 
}, false); 
} 
/** 
* 监听键盘的敲击事件 
*/ 
function listenKeyUp() { 
var beginBtn = document.querySelector('#beginBtn'); 
if (!isNaN(this.value) && this.value.length != ) { 
if (active < ) { 
active += ; 
} 
inputBtn[active].focus(); 
} else if (this.value.length == ) { 
if (active > ) { 
active -= ; 
} 
inputBtn[active].focus(); 
} 
if (active >= ) { 
var _value = inputBtn[active].value; 
if (beginBtn.className == 'begin-no' && !isNaN(_value) && _value.length != ) { 
beginBtn.className = 'begin'; 
beginBtn.addEventListener('click', function () { 
calculate.begin(); 
}, false); 
} 
} else { 
if (beginBtn.className == 'begin') { 
beginBtn.className = 'begin-no'; 
} 
} 
} 
})(window, document);

首先我们对最外层的div进行监听,当发现用户选择div的时候就将input的焦点设置到active上面去,而这个active则是一个计数器,默认的时候是第一位的,也就是0,而当我们输入了正确的数字后将会增加一个active,这样input的焦点就会向后移动了,这样就完成了输入一个向后移动一位的功能了,而同时我们监听键盘上的退格键,当用户点击了退格键之后就对active减一,这样输入框的焦点也就向前移动了,当然,当input失去焦点的时候我们也同时移除绑定在上面的监听事件,这样就不会造成多次触发的问题了。

其实这样梳理下来会发现整个效果还是很简单的,只需要控制好一个焦点的移动就好了,而我觉得整个组件的重点还是在CSS样式的模仿上面~毕竟JavaScript的逻辑没有什么难的~最后祝大家元旦快乐啦~(*^__^*) ~~

以上代码给大家简单介绍了JavaScript仿支付宝密码输入框的全部叙述,希望大家喜欢。

Javascript 相关文章推荐
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
Apr 20 Javascript
Javascript验证方法大全
Sep 21 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
js模拟支付宝密码输入框
Apr 11 Javascript
详解vue express启动数据服务
Jul 05 Javascript
vue2.0 中使用transition实现动画效果使用心得
Aug 13 Javascript
JS复杂判断的更优雅写法代码详解
Nov 07 Javascript
JS无限级导航菜单实现方法
Jan 05 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
js实现商城星星评分的效果
Dec 29 #Javascript
原生js配合cookie制作保存路径的拖拽
Dec 29 #Javascript
一种新的javascript对象创建方式Object.create()
Dec 28 #Javascript
JavaScrip常见的一些算法总结
Dec 28 #Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 #Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 #Javascript
Bootstrap实现响应式导航栏效果
Dec 28 #Javascript
You might like
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
Js中使用正则表达式验证输入是否有特殊字符
2018/09/07 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python递归全排列实现方法
2018/08/18 Python
python3人脸识别的两种方法
2019/04/25 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
python单例设计模式实现解析
2020/01/07 Python
python实现UDP协议下的文件传输
2020/03/20 Python
Python之字典添加元素的几种方法
2020/09/30 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
实验心得体会
2014/09/05 职场文书
假释思想汇报范文
2014/10/11 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Python编程super应用场景及示例解析
2021/10/05 Python