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动态追加页面数据以及事件委托详解
May 06 jQuery
jQuery validata插件实现方法
Jun 25 jQuery
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jQuery 开发之EasyUI 添加数据的实例
Sep 26 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
jquery登录的异步验证操作示例
May 09 jQuery
jquery检测上传文件大小示例
Apr 26 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 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
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
php计算函数执行时间的方法
2015/03/20 PHP
PHP针对多用户实现更换头像功能
2016/09/04 PHP
PHP实现的XML操作类【XML Library】
2016/12/29 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
jQuery新闻滚动插件 jquery.roller.js
2011/06/27 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
jquery ajax 局部无刷新更新数据的实现案例
2014/02/08 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
JavaScript表单焦点自动切换代码
2016/07/24 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Python实现在线音乐播放器
2017/03/03 Python
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
Python中的类与类型示例详解
2019/07/10 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
新浪微博实习心得体会
2014/01/27 职场文书
高中生逃课检讨书
2014/10/10 职场文书
九年级数学教学反思
2016/02/17 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python