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 相关文章推荐
不一样的文字闪烁 轮番闪烁
Nov 11 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
Nov 19 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
js文件缓存之版本管理详解
Jul 05 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
javascript html5实现表单验证
Mar 01 Javascript
vue2.0开发实践总结之疑难篇
Dec 07 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
使用vue判断当前环境是安卓还是IOS
Apr 12 Vue.js
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中foreach循环中使用引用要注意的地方
2011/01/02 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
js数组操作学习总结
2013/11/04 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
vue.js实例todoList项目
2017/07/07 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python调用C语言开发的共享库方法实例
2015/03/18 Python
python创建关联数组(字典)的方法
2015/05/04 Python
Python实现多进程的四种方式
2019/02/22 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
2021/02/27 Python
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
Ajax请求总共有多少种Callback
2016/07/17 面试题
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
开业庆典策划方案
2014/02/18 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
会计求职自荐信
2015/03/26 职场文书
化验室安全管理制度
2015/08/06 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
教你一步步实现一个简易promise
2021/11/02 Javascript
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技