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 刷新页面的代码小结 推荐
Apr 02 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
表单提交前触发函数返回true表单才会提交
Mar 11 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
Jun 09 Javascript
原生js代码实现图片放大境效果
Oct 30 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
Nov 29 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
Feb 08 Javascript
vue cli升级webapck4总结
Apr 04 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
Mar 13 Javascript
vue + typescript + 极验登录验证的实现方法
Jun 27 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
pw的一个放后门的方法分析
2007/10/08 PHP
PHP Class&amp;Object -- 解析PHP实现二叉树
2013/06/25 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
基于jquery &amp; json的省市区联动代码
2012/06/26 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
jQuery+css实现炫目的动态块漂移效果
2016/01/28 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
ES6中的迭代器、Generator函数及Generator函数的异步操作方法
2019/05/12 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
python访问sqlserver示例
2014/02/10 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
Python 项目转化为so文件实例
2019/12/23 Python
python输入中文的实例方法
2020/09/14 Python
python 星号(*)的多种用途
2020/09/21 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
暑假实习求职信范文
2013/09/22 职场文书
刘胡兰的英雄事迹材料
2014/02/11 职场文书
2014年大学生预备党员思想汇报1000字
2014/09/13 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
国庆节慰问信
2015/02/15 职场文书
雾霾停课通知
2015/04/24 职场文书
人事任命书范本
2015/09/21 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL