jQuery仿移动端支付宝键盘的实现代码


Posted in jQuery onAugust 15, 2018

最近做项目时碰到一个需求,就是在移动端支付页面点击支付按钮弹出一个支付键盘,类似于支付宝的那种。由于项目只是单纯的手机网站,而并非app,所以这个功能得由前端来实现。话不多说,先上图看看效果。

jQuery仿移动端支付宝键盘的实现代码

尼玛,这不就是支付宝app那个支付键盘吗? 没错,咱们UI就是参照支付宝做的这个键盘。你可能会问,为什么不直接调用支付宝提供的支付接口呢。额,因为项目需要,这里就不多解释了。

我们先看一下实现后的效果图

jQuery仿移动端支付宝键盘的实现代码jQuery仿移动端支付宝键盘的实现代码jQuery仿移动端支付宝键盘的实现代码

HTML部分

<!-- 支付键盘 -->
  <divclass="pay-container">
    <divclass="pay-title">
      <spanclass="pay-title-remove">×</span>
      输入支付密码
    </div>
    <divclass="pay-body">
      <divclass="input-container">
        <inputclass="input-item"type="password"readonly>
        <inputclass="input-item"type="password"readonly>
        <inputclass="input-item"type="password"readonly>
        <inputclass="input-item"type="password"readonly>
        <inputclass="input-item"type="password"readonly>
        <inputclass="input-item"type="password"readonly>
      </div>
      <divclass="forgetPwd-container">
        <aclass="forgetPwd"href="">忘记密码?</a>
      </div>
      <divclass="key-container">
        <divclass="key-item">1</div>
        <divclass="key-item">2</div>
        <divclass="key-item">3</div>
        <divclass="key-item">4</div>
        <divclass="key-item">5</div>
        <divclass="key-item">6</div>
        <divclass="key-item">7</div>
        <divclass="key-item">8</div>
        <divclass="key-item">9</div>
        <divclass="key-item empty"></div>
        <divclass="key-item">0</div>
        <divclass="key-item remove"></div>
      </div>
    </div>
  </div>

CSS部分

.pay-container{ width:7.5rem; height:8rem; background-color:#fbf9fb; position:fixed;z-index:999; overflow:hidden;display:none; }
/* .pay-container-show{transform: translate3d(0, -8.9rem, 0);transition: 0.5s ease;transform: translate3d(0, 0, 0); transition: 0.5s ease;} */
.pay-title{ height:0.96rem; line-height:0.96rem; border-bottom:1pxsolid#b3afaf; text-align:center; color:#070707;
position:relative; font-size:0.36rem;}
.pay-title.pay-title-remove{ width:0.24rem; height:0.24rem; position:absolute; top:0.35rem; left:0.33rem; line-height:0.28rem;
font-size:0.45rem;}
.pay-body{ padding-top:0.56rem;position:relative; height:7rem; box-sizing:border-box;}
.pay-body.input-container{ width:6.74rem; height:0.93rem; border:1pxsolid#ebe8eb; overflow:hidden; border-radius:5px;
background-color:#fff; margin:0auto; display:flex;flex-direction:row;align-items:center; 
flex-wrap:wrap; justify-content:center;align-content:center;}
.pay-body.input-container.input-item{ width:1.1rem; height:0.92rem; display:inline-block; margin:0; border-right:1pxsolid#ebe8eb;
text-align:center; line-height:0.92rem; border-radius:0; }
.pay-body.input-container.input-item:nth-last-child(1){ border-right:0;}
.pay-body.forgetPwd-container{width:6.74rem;margin:0.22remauto0; text-align:right;}
.pay-body.forgetPwd-container.forgetPwd{ color:#52bfff; font-size:0.24rem; }
.pay-body.key-container{ width:100%; height:4.56rem; position:absolute; bottom:0; display:flex;flex-direction:row;align-items:center; 
  flex-wrap:wrap; justify-content:center;align-content:center; }
.pay-body.key-container.key-item{ width:2.47rem; height:1.12rem; line-height:1.12rem; text-align:center; border-right:2pxsolid#f3f3f3;
  border-top:2pxsolid#f3f3f3; font-size:0.66rem; color:#1e1d1f;background-color:#fff;}
.pay-body.key-container.key-item:nth-child(3),
.pay-body.key-container.key-item:nth-child(6),
.pay-body.key-container.key-item:nth-child(9),
.pay-body.key-container.key-item:nth-child(12){ border-right:0;}
.pay-body.key-container.key-item.remove,.pay-body.key-container.key-item.empty{ font-size:0.24rem;background-color:#e6e9f1;}
.pay-body.key-container.key-item.remove{ background:url('../images/pay-remove.png') centerno-repeat#e6e9f1; background-size:.52rem.32rem; }
.pay-body.key-container.selected{ background-color:#e4e8f4;}

核心JS部分

var arr = [];
    var num =0;

    //响应键盘事件
    $('.key-item').on('touchstart', function () {
      $(this).addClass('selected')
    })
    $('.key-item').on('touchend', function () {
      $(this).removeClass('selected')
    })
    $('.key-item').on('click', function () {
      var value =$(this).text();
      var inputItem =$('.layui-m-layercont .input-item');
      if (!$(this).hasClass('remove')) {
        if (num <6) {
          $(inputItem[num]).val(value);
          if (num ==5) {
            var arr = [];
            for (var i =0; i < inputItem.length; i++) {
              arr.push(inputItem[i].value)
            }
            arr =parseInt(arr.join(''));
            if (arr !==123456) {
              layer.open({
                content:'支付密码错误请重新输入!',
                skin:'msg',
                time:2//2秒后自动关闭
              });
            } else {
              layer.open({
                content:'输入正确!',
                skin:'msg',
                time:2//2秒后自动关闭
              });
            }
            num++;
            returnfalse;
          }
          num++;
        }
      } else {
        if (num >0) {
          num--;
          $(inputItem[num]).val('');
        }
      }
    })

总结

以上所述是小编给大家介绍的jQuery仿移动端支付宝键盘的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
如何编写jquery插件
Mar 29 jQuery
jQuery为某个div加入行样式
Jun 09 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
jQuery实现checkbox的简单操作
Nov 18 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
详解jquery和vue对比
Apr 16 jQuery
jquery实现的分页显示功能示例
Aug 23 jQuery
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
jQuery+ajax实现文件上传功能
Dec 22 jQuery
jQuery实现的简单拖拽功能示例【测试可用】
Aug 14 #jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 #jQuery
JQuery通过后台获取数据遍历到前台的方法
Aug 13 #jQuery
jQuery实现图片简单轮播功能示例
Aug 13 #jQuery
jQuery模拟12306城市选择框功能简单实现方法示例
Aug 13 #jQuery
jQuery中$原理实例分析
Aug 13 #jQuery
深入浅析angular和vue还有jquery的区别
Aug 13 #jQuery
You might like
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
js截取函数(indexOf,join等)
2010/09/01 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
Ionic如何实现下拉刷新与上拉加载功能
2016/06/03 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
jQuery插件FusionCharts绘制2D柱状图和折线图的组合图效果示例【附demo源码】
2017/04/10 jQuery
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python文件读写代码实例
2019/10/21 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
python 调整图片亮度的示例
2020/12/03 Python
党员学习十八大感想
2014/01/17 职场文书
2014春晚主持词
2014/03/25 职场文书
市场营销调查计划书
2014/05/02 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
教师批评与自我批评
2014/10/15 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
婚前保证书范文
2015/02/28 职场文书
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
yolov5返回坐标的方法实例
2022/03/17 Python