js仿支付宝填写支付密码效果实现多方框输入密码

 更新时间:2016年03月09日 10:21:42   投稿:lijiao  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • JS日期和时间选择控件升级版(自写)

    JS日期和时间选择控件升级版(自写)

    鉴于网上找到的几个日期选择程序有些问题,遂着手重写一个程序,添加了时间选择功能,截图及源码如下,有需要的朋友可以参考下
    2013-08-08
  • 基于JS实现的消消乐游戏的示例代码

    基于JS实现的消消乐游戏的示例代码

    这篇文章主要为大家介绍了如何利用JS实现消消乐小游戏,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • JS中常用的正则表达式

    JS中常用的正则表达式

    这篇文章主要介绍了JS中常用的正则表达式,都是我日常收集整理的,包括电话验证,数字验证,车牌号码验证,身份证号验证包括15位18位身份证验证,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • 微信小程序使用video组件播放视频功能示例【附源码下载】

    微信小程序使用video组件播放视频功能示例【附源码下载】

    这篇文章主要介绍了微信小程序使用video组件播放视频功能,结合实例形式分析了video组件播放本地mp4小视频的具体实现技巧,并附带源码供读者下载参考,需要的朋友可以参考下
    2017-12-12
  • javascript ES6 Template String模板字符串使用方法

    javascript ES6 Template String模板字符串使用方法

    这篇文章主要介绍了javascript ES6 模板字符串(Template String)是增强版的字符串,用反引号(`)标识,它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量,需要的朋友可以参考下
    2023-06-06
  • js实现瀑布流触底动态加载数据

    js实现瀑布流触底动态加载数据

    这篇文章主要为大家详细介绍了js实现瀑布流触底动态加载数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 微信小程序虚拟列表的实现示例

    微信小程序虚拟列表的实现示例

    大部分小程序都会有这样的需求,页面有长列表,需要下拉到底时请求后台数据,一直渲染数据,当数据列表长时,会发现明显的卡顿,页面白屏闪顿现象,那么如何实现小程序虚拟列表,感兴趣的可以了解一下
    2021-07-07
  • 基于js中style.width与offsetWidth的区别(详解)

    基于js中style.width与offsetWidth的区别(详解)

    下面小编就为就大家带来一篇基于js中style.width与offsetWidth的区别(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • JavaScript实现涂鸦笔功能

    JavaScript实现涂鸦笔功能

    这篇文章主要为大家详细介绍了JavaScript实现涂鸦笔功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 浅谈javascript 函数表达式和函数声明的区别

    浅谈javascript 函数表达式和函数声明的区别

    javascript中声明函数的方法有两种:函数声明式和函数表达式.究竟他们用起来有什么区别呢,今天就本着打破砂锅问到底的精神,好好来说说这个让人神魂颠倒的--函数声明。
    2016-01-01

最新评论