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 相关文章推荐
动态加载JS文件的三种方法
Nov 08 Javascript
js与C#进行时间戳转换
Nov 14 Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 Javascript
JavaScript实现SHA-1加密算法的方法
Mar 11 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
js模块加载方式浅析
Aug 12 Javascript
浅谈angular4 ng-content 中隐藏的内容
Aug 18 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
vue代码分割的实现(codesplit)
Nov 13 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 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
php增删改查示例自己写的demo
2013/09/04 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
一百行python代码将图片转成字符画
2021/02/19 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python制作图片缩略图
2019/04/30 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
工程业务员岗位职责
2013/12/31 职场文书
顶撞老师检讨书
2014/02/07 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
承诺书模板
2014/08/30 职场文书
践行三严三实心得体会
2014/10/13 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
见习报告格式范文
2014/11/08 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
监护人证明
2015/06/19 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
Apache SeaTunnel实现 非CDC数据抽取
2022/05/20 Servers