vue实现键盘输入支付密码功能


Posted in Javascript onAugust 18, 2018

本文实例为大家分享了vue实现键盘输入支付密码功能的具体代码,供大家参考,具体内容如下

支付密码功能界面如下图:

vue实现键盘输入支付密码功能

主要代码如下:

<template>
 <div class="pay-tool">
  <div class="pay-tool-title border-bottom">
   <span class="icon icon-back" @click="backHandle"></span><strong>请输入交易密码</strong>
  </div>
  <div class="pay-tool-content">
   <div class="pay-tool-inputs">
    <div class="item" v-for="i in items"><span class="icon_dot" v-if="password[i]"></span></div>
   </div>
   <div class="pay-tool-link"><router-link class="link" to="/getP">忘记密码?</router-link></div>
  </div>
  <div class="pay-tool-keyboard">
   <ul>
    <li @click="keyUpHandle($event)" v-for="val in keys">
     {{ val }}
    </li>
    <li class="del" @click="delHandle"><span class="icon-del"><</span></li>
   </ul>
  </div>
 </div>
</template>

<script>
 const keys = () => [1, 2, 3, 4, 5, 6, 7, 8, 9, '', 0]
 // let sendFlag = true // 防止重复发送密码
 export default {
  data () {
   return {
    items: [0, 1, 2, 3, 4, 5],
    keys: keys(),
    password: []
   }
  },
  methods: {
   backHandle () {
    this.clearPasswordHandle() // 返回时清除password
    this.$emit('backFnc') // 返回上级
   },
   keyUpHandle (e) {
    let text = e.currentTarget.innerText
    let len = this.password.length
    if (!text || len >= 6) return
    this.password.push(text)
    this.ajaxData()
   },
   delHandle () {
    if (this.password.length <= 0) return false
    this.password.shift()
   },
   ajaxData () {
    if (this.password.length >= 6) {
     console.log(parseInt(this.password.join(' ').replace(/\s/g, '')))
    }
    return false
   },
   clearPasswordHandle: function () {
    this.password = []
   }
  }
 }
</script>

<style lang="less" scoped>
 .pay-tool {
  position: relative;
  height: 18.93333333rem;
  background-color: #fff;
  overflow: hidden;
  &-title {
   width: 100%;
   height: 2.08888888rem;
   padding: 0 0.8rem;
   line-height: 2.08888888rem;
   text-align: center;
   overflow: hidden;
   .icon {
    float: left;
    margin-top: 0.72222222rem;
   }
   strong {
    font-size: 0.8rem;
   }
  }
  &-content {
   .pay-tool-inputs {
    width: 14.46666666rem;
    height: 2.31111111rem;
    margin: 1.28888888rem auto 0;
    border: 1px solid #b9b9b9;
    border-radius: 0.26666666rem;
    box-shadow: 0 0 1px #e6e6e6;
    display: flex;
    .item {
     width: 16.66666666%;
     height: 2.31111111rem;
     border-right: 1px solid #b9b9b9;
     line-height: 2.31111111rem;
     text-align: center;
     &:last-child {
      border-right: none;
     }
     .icon_dot {
      display: inline-block;
      width: 0.51111111rem;
      height: 0.51111111rem;
      background: url("../../assets/images/icon_dot.png") no-repeat;
      background-size: cover;
     }
    }
   }
   .pay-tool-link {
    padding: 0.53333333rem 0.8rem 0;
    text-align: right;
    .link {
     font-size: 0.66666666rem;
     color: #3c8cfb;
    }
   }
  }
  .pay-tool-keyboard {
   position: absolute;
   left: 0;
   bottom: 0;
   width: 100%;
   ul {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    li {
     width: 33.3333%;
     height: 2.25442834rem;
     line-height: 2.25442834rem;
     text-align: center;
     border-right: 1px solid #aeaeae;
     border-bottom: 1px solid #aeaeae;
     font-size: 0.8rem;
     font-weight: bold;
     &:nth-child(1), &:nth-child(2), &:nth-child(3) {
      border-top: 1px solid #eee;
     }
     &:nth-child(3), &:nth-child(6), &:nth-child(9), &:nth-child(12) {
      border-right: none;
     }
     &:nth-child(10), &:nth-child(11), &:nth-child(12) {
      border-bottom: none;
     }
     &:nth-child(10), &:nth-child(12), &:active {
      background-color: #d1d4dd;
     }
     &:nth-child(12):active {
      background-color: #fff;
     }
    }
   }
  }
 }
</style>

注意:页面使用rem布局,根html的font-size为45px。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
Jun 16 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
javascript prototype原型详解(比较基础)
Dec 26 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
Apr 27 Javascript
vue 组件中slot插口的具体用法
Apr 03 Javascript
vue使用jsonp抓取qq音乐数据的方法
Jun 21 Javascript
玩转vue的slot内容分发
Sep 22 Javascript
JS异步执行结果获取的3种解决方式
Feb 19 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
微信小程序上传图片并等比列压缩到指定大小的实例代码
Oct 24 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 #Javascript
Vue实现6位数密码效果
Aug 18 #Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 #Javascript
详解Angular6 热加载配置方案
Aug 18 #Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 #Javascript
vue下history模式刷新后404错误解决方法
Aug 18 #Javascript
详解javascript appendChild()的完整功能
Aug 18 #Javascript
You might like
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
php的4种常见运行方式
2015/03/20 PHP
php常用日期时间函数实例小结
2019/07/04 PHP
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
JQuery给元素添加/删除节点比如select
2013/04/02 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
基于JS实现导航条flash导航条
2016/06/17 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
jQuery 动态粒子效果示例代码
2020/07/07 jQuery
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python验证码识别的方法
2015/07/10 Python
PyQt5实现拖放功能
2018/04/25 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
Python 使用type来定义类的实现
2019/11/19 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python读取yaml文件的详细教程
2020/07/21 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
大三自我鉴定范文
2013/10/05 职场文书
物流专业大学应届生求职信
2013/11/03 职场文书
标准自荐信范文
2014/01/29 职场文书
关于期中考试的反思
2014/02/02 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
525心理活动总结
2014/07/04 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
清洁员岗位职责
2015/02/15 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS