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 弹出窗体点击按钮返回选择数据的实现
Apr 01 Javascript
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
Apr 15 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
原生js编写焦点图效果
Dec 08 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
微信小程序如何连接Java后台
Aug 08 Javascript
flexible.js实现移动端rem适配方案
Apr 07 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 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 模板高级篇总结
2006/12/21 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
javascript 日期常用的方法
2009/11/11 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
js实现查询商品案例
2020/07/22 Javascript
Python里隐藏的“禅”
2014/06/16 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python实现在线音乐播放器
2017/03/03 Python
Python实现的建造者模式示例
2018/08/06 Python
python生成特定分布数的实例
2019/12/05 Python
Python文件操作函数用法实例详解
2019/12/24 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
django实现日志按日期分割
2020/05/21 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
英国太阳镜品牌:Taylor Morris Eyewear
2018/04/18 全球购物
党风廉政建设调研报告
2015/01/01 职场文书
清明扫墓感想
2015/08/11 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js