js仿支付宝填写支付密码效果实现多方框输入密码


Posted in Javascript onMarch 09, 2016

不知道怎么描述标题,先看截图吧,大致的效果就是一个框输入一位密码。

js仿支付宝填写支付密码效果实现多方框输入密码

最开始实现的思路是一个小方框就是一个type为password的input,每输入一位自动跳到下一位,删除一位就自动跳到前一位,android上是OK的,很平滑也没有bug,但是ios上会出现键盘频繁调起和关闭,非常影响用户体验。原因估计是每个input会不断的focus和blur,每次focus会调起键盘,blur又会关闭键盘,so....此方案肯定不行了。

PM非要实现这种效果,木有办法~拗不过,一句用户体验不好会让你没话说,谁要咱是前端呢~拗不过就找解决方案吧。

既然多个是频繁focus和blur导致的问题,又必须是密码框,那何不就用一个input框来输入呢,小方框就用别的方式模拟,开干。

下面是实现的样式:

.pwd-box{
width:310px;
padding-left: 1px;
position: relative;
border: 1px solid #9f9fa0;
border-radius: 3px;
}
.pwd-box input[type="tel"]{
width: 99%;
height: 45px;
color: transparent;
position: absolute;
top: 0;
left: 0;
border: none;
font-size: 18px;
opacity: 0;
z-index: 1;
letter-spacing: 35px;
}
.fake-box input{
width: 44px;
height: 48px;
border: none;
border-right: 1px solid #e5e5e5;
text-align: center;
font-size: 30px;
}
.fake-box input:nth-last-child(1){
border:none;
}

.pwd-box .pwd-input:focus{//密码框聚焦的时候需要改变其位置,否则IOS上会有闪动的光标~
left:-1000px;
top: -100px;
}
var $input = $(".fake-box input");
      $("#pwd-input").on("input", function() {
        var pwd = $(this).val().trim();
        for (var i = 0, len = pwd.length; i < len; i++) {
          $input.eq("" + i + "").val(pwd[i]);
        }
        $input.each(function() {
          var index = $(this).index();
          if (index >= len) {
            $(this).val("");
          }
        });
        if (len == 6) {
          self.sendPackage(pwd);//发送密码
        }
      });

大致的思路就是动态监听真实密码框的输入修改小方框内密码框的内容。

其实效果实现不难,关键是思路还有解决该死的兼容,完成该效果的时候IOS会有闪动的光标,android没有,然后找一系列方法去隐藏光标,比如focus时候设置text-indent,color设置transparent等等,但都无济于事,后来发现淘宝有个办法是focus时候把密码框丢到一边去,因为外层有overflow hidden,完美解决了问题。

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript等比例缩放图片控制超出范围的图片
Aug 06 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
jQuery实现打开页面渐现效果示例
Jul 27 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 Javascript
vue实现搜索功能
May 28 Javascript
教你如何用Node实现API的转发(某音乐)
Sep 20 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
JavaScript中变量提升机制示例详解
Dec 27 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 Javascript
js canvas实现俄罗斯方块
Oct 11 Javascript
jquery实现文本框textarea自适应高度
Mar 09 #Javascript
分享12个实用的jQuery代码片段
Mar 09 #Javascript
详解JavaScript正则表达式之分组匹配及反向引用
Mar 09 #Javascript
javascript html5移动端轻松实现文件上传
Mar 27 #Javascript
javascript事件绑定学习要点
Mar 09 #Javascript
js实现分割上传大文件
Mar 09 #Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
Mar 09 #Javascript
You might like
cmd下运行php脚本
2008/11/25 PHP
php 进度条实现代码
2009/03/10 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
js tab效果的实现代码
2009/12/26 Javascript
ext jquery 简单比较
2010/04/07 Javascript
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python NumPy库安装使用笔记
2015/05/18 Python
Python Flask基础教程示例代码
2018/02/07 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
python pytest进阶之xunit fixture详解
2019/06/27 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
创建文明城市标语
2014/06/16 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
销售人员工作自我评价
2014/09/21 职场文书
房产协议书范本
2014/10/18 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
小学教研工作总结2015
2015/05/13 职场文书