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 相关文章推荐
被遗忘的javascript的slice() 方法
Apr 20 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
修改js confirm alert 提示框文字的简单实例
Jun 10 Javascript
Vue.js双向绑定操作技巧(初级入门)
Dec 27 Javascript
如何获取元素的最终background-color
Feb 06 Javascript
JS仿淘宝搜索框用户输入事件的实现
Jun 19 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
Sep 11 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
fetch 如何实现请求数据
Dec 20 Javascript
Vue 进阶之路(三)
Apr 18 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 Javascript
uniapp开发小程序的经验总结
Apr 08 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 str_replace的替换漏洞
2008/03/15 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
js活用事件触发对象动作
2008/08/10 Javascript
js正确获取元素样式详解
2009/08/07 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
vue excel上传预览和table内容下载到excel文件中
2019/12/10 Javascript
js实现随机点名功能
2020/12/23 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python中使用urllib2模块编写爬虫的简单上手示例
2016/01/20 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
大学生就业自我鉴定
2013/10/26 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书
党员个人总结自评
2015/02/14 职场文书
司机岗位职责范本
2015/04/10 职场文书
求职意向书范本
2015/05/11 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers