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 相关文章推荐
javascript Array.sort() 跨浏览器下需要考虑的问题
Dec 07 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
JQuery中Text方法用法实例分析
May 18 Javascript
关于session和cookie的简单理解
Jun 08 Javascript
jQuery实现可移动选项的左右下拉列表示例
Dec 26 Javascript
浅谈js中的this问题
Aug 31 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 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
PHP5在Apache下的两种模式的安装
2006/09/05 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
详解Yii2 定制表单输入字段的标签和样式
2017/01/04 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
Javascript学习笔记 delete运算符
2011/09/13 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
js实现视图和数据双向绑定的方法分析
2020/02/05 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python中selenium库的基本使用详解
2020/07/31 Python
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
2014年开学第一课活动方案
2014/03/06 职场文书
班主任寄语大全
2014/04/04 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
行政申诉状范文
2015/05/20 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers