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 相关文章推荐
自动检查并替换文本框内的字符
Jun 30 Javascript
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
Nov 05 Javascript
Javascript中Date类型和Math类型详解
Feb 27 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
bootstrap手风琴制作方法详解
Jan 11 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
PHP 502bad gateway原因及解决方案
Nov 13 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 缓存函数代码
2008/08/27 PHP
使用PHP Socket写的POP3类
2013/10/30 PHP
php数组去除空值函数分享
2015/02/02 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
点评js异步加载的4种方式
2015/12/22 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
用Python编写web API的教程
2015/04/30 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
Python对象转换为json的方法步骤
2019/04/25 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
详解python中的lambda与sorted函数
2020/09/04 Python
python map比for循环快在哪
2020/09/21 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
市场营销专业个人求职信范文
2013/12/14 职场文书
公证委托书模板
2014/04/03 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
乱世佳人观后感
2015/06/08 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
Go 自定义package包设置与导入操作
2021/05/06 Golang