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(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
Aug 18 Javascript
JavaScript数据结构与算法之链表
Jan 29 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
javascript将list转换成树状结构的实例
Sep 08 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
Oct 25 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 Javascript
vue 避免变量赋值后双向绑定的操作
Nov 07 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
《雄兵连》《烈阳天道》真的来了
2020/07/13 国漫
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
使用python实现mqtt的发布和订阅
2019/05/05 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
python 字典访问的三种方法小结
2019/12/05 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
简单介绍Object类的功能、常用方法
2013/10/02 面试题
2014小学教师年度考核工作总结
2014/12/03 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
Nginx配置https的实现
2021/11/27 Servers
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS