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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
Javascript 写的简单进度条控件
Jan 22 Javascript
firefox下frameset取不到值的解决方法
Sep 06 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
Apr 15 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
微信小程序 网络API Websocket详解
Nov 09 Javascript
javascript cookie的基本操作(添加和删除)
Jul 24 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
编写更好的JavaScript条件式和匹配条件的技巧(小结)
Jun 27 Javascript
Vue项目移动端滚动穿透问题的实现
May 19 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
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
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
JavaScript中的property和attribute介绍
2011/12/26 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
Node.js读取文件内容示例
2017/03/07 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
NodeJs实现简单的爬虫功能案例分析
2018/12/05 NodeJs
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
浅谈vue权限管理实现及流程
2020/04/23 Javascript
Jquery 获取相同NAME 或者id删除行操作
2020/08/24 jQuery
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
python实现排序算法
2014/02/14 Python
利用matplotlib+numpy绘制多种绘图的方法实例
2017/05/03 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
python计算导数并绘图的实例
2020/02/29 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
AJAX的优缺点都有什么
2015/08/18 面试题
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
初中音乐教学反思
2014/01/12 职场文书
经典演讲稿汇总
2014/05/19 职场文书
消防标语大全
2014/06/07 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
HTML中的表格元素介绍
2022/02/28 HTML / CSS