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 相关文章推荐
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
Jun 12 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
PassWord输入框代码分享
Jun 07 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
Aug 03 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
基于D3.js实现时钟效果
Jul 17 Javascript
Vuex中实现数据状态查询与更改
Nov 08 Javascript
Vue父子传递实例讲解
Feb 14 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 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 print类函数使用总结
2010/06/25 PHP
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
小白谈谈对JS原型链的理解
2016/05/03 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[04:52]DOTA2亚洲邀请赛附加赛 TOP10精彩集锦
2015/01/29 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
python利用有道翻译实现&quot;语言翻译器&quot;的功能实例
2017/11/14 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
Django日志及中间件模块应用案例
2020/09/10 Python
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
资深生产主管自我评价
2013/09/22 职场文书
公证委托书大全
2014/04/04 职场文书
地方白酒代理协议书
2014/10/25 职场文书
营销计划书
2015/01/17 职场文书
慰问信格式
2015/02/14 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
cypress测试本地web应用
2022/06/01 Javascript