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 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
JS操作HTML自定义属性的方法
Feb 10 Javascript
javascript框架设计之框架分类及主要功能
Jun 23 Javascript
Javascript中arguments对象的详解与使用方法
Oct 04 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
SpringMVC简单整合Angular2的示例
Jul 31 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
JS 自执行函数原理及用法
Aug 05 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
Sep 28 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 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
JS 网站性能优化笔记
2011/05/24 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
javascript中的作用域scope介绍
2010/12/28 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
javascript制作的cookie封装及使用指南
2015/01/02 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
微信小程序实战之轮播图(3)
2017/04/17 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python实现批量修改文件名实例
2015/07/08 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
微博营销计划书
2014/01/10 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
医疗纠纷协议书
2014/04/16 职场文书
促销活动总结报告
2014/04/26 职场文书
大学迎新标语
2014/06/26 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫