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动态添加删除,后台取数据(示例代码)
Nov 25 Javascript
javaScript 页面自动加载事件详解
Feb 10 Javascript
jQuery中position()方法用法实例
Jan 16 Javascript
jQuery基于扩展简单实现倒计时功能的方法
May 14 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
May 16 Javascript
Vue.js动态添加、删除选题的实例代码
Sep 30 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
Nov 28 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
Sep 19 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
Sep 24 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 身份验证方面的函数
2009/10/11 PHP
php中显示数组与对象的实现代码
2011/04/18 PHP
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
php递归调用删除数组空值元素的方法
2015/04/28 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
vue 路由页面之间实现用手指进行滑动的方法
2018/02/23 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
JavaScript仿京东轮播图效果
2021/02/25 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
pygame实现烟雨蒙蒙下彩虹雨
2019/11/11 Python
python迭代器常见用法实例分析
2019/11/22 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
中英文求职信范文
2014/01/27 职场文书
给全校老师的建议书
2014/03/13 职场文书
政府四风问题整改措施
2014/10/04 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
校运会广播稿
2015/08/19 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python