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 获取url参数和script标签中获取url参数函数代码
Jan 22 Javascript
jquery 打开窗口返回值实现代码
Mar 04 Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
Nov 09 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
Mar 25 Javascript
js数组实现权重概率分配
Sep 12 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
Mar 06 Javascript
vue-cli项目无法用本机IP访问的解决方法
Sep 20 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 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
如何过滤高亮显示非法字符
2006/10/09 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
Javascript实现单张图片浏览
2014/12/18 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
暑期实践思想汇报
2014/01/06 职场文书
安全大检查反思材料
2014/01/31 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
公司出差管理制度范本
2015/08/05 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
解析MySQL binlog
2021/06/11 MySQL
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技