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之大字符串的连接的StringBuffer 类
May 08 Javascript
JQuery筛选器全系列介绍
Aug 27 Javascript
Angular中的Promise对象($q介绍)
Mar 03 Javascript
jquery精度计算代码 jquery指定精确小数位
Feb 06 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
jQuery UI Grid 模态框中的表格实例代码
Apr 01 jQuery
JS实现常见的查找、排序、去重算法示例
May 21 Javascript
使用ECharts实现状态区间图
Oct 25 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 Javascript
原生JS实现相邻月份日历
Oct 13 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
Oct 22 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弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
Dojo 学习要点
2010/09/03 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
Element Input输入框的使用方法
2020/07/26 Javascript
Python正则表达式匹配ip地址实例
2014/10/09 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
python如何随机生成高强度密码
2020/08/19 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
VSCode 自定义html5模板的实现
2019/12/05 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
班组长竞聘书
2014/03/31 职场文书
财务会计专业自荐书
2014/06/30 职场文书
化学工程专业求职信
2014/08/10 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
光荣之路观后感
2015/06/12 职场文书
诚实守信主题班会
2015/08/13 职场文书
排查Tomcat进程假死的问题
2022/05/06 Servers