Vue实现6位数密码效果


Posted in Javascript onAugust 18, 2018

在ios系统,原生 webview 嵌套H5页面使用时,编写完成的6位数输入密码,输入密码卡顿问题的解决方案:

如下图:

Vue实现6位数密码效果

原因是因为,CSS 这块 造成的。简单来说,style left 为负数的时候出现的,android 目测不会出现此问题

input[type=tel] {
 opacity: 0;
 z-index: -1;
 position: absolute;
 left:-100%;
}

解决方案:

重新设置 input样式问题

input[type=tel] {
 width: 0.1px;
 height: 0.1px;
 color: transparent;
 position: relative;
 top: 23px;
 background: #000000;
 left: 46px;
 border: none;
 font-size: 18px;
 opacity: 0;
 z-index: -1;
}

全部代码在这,你可以拿出去使用即可

<template>
 <div id="payPwd">
  <header>支付密码设置</header>
  <input ref="pwd" type="tel" maxlength="6" v-model="msg" class="pwd" unselectable="on" />
  <ul class="pwd-wrap" @click="focus">
   <li :class="msg.length == 0?'psd-blink':''"><i v-if="msg.length > 0"></i></li>
   <li :class="msg.length == 1?'psd-blink':''"><i v-if="msg.length > 1"></i></li>
   <li :class="msg.length == 2?'psd-blink':''"><i v-if="msg.length > 2"></i></li>
   <li :class="msg.length == 3?'psd-blink':''"><i v-if="msg.length > 3"></i></li>
   <li :class="msg.length == 4?'psd-blink':''"><i v-if="msg.length > 4"></i></li>
   <li :class="msg.length == 5?'psd-blink':''"><i v-if="msg.length > 5"></i></li>
  </ul>
  <button type="button" @click="sendCode">获取验证码 lodding</button>
 </div>
</template>
<script>
 import api from "./api";
 import "@/js/utils"; //公共方法
 export default {
  components: {},
  data() {
   return {
    msg: '',
   }
  },
  created() {},
  computed: {},
  watch: {
   msg(curVal) {
    if(/[^\d]/g.test(curVal)) {
     this.msg = this.msg.replace(/[^\d]/g, '');
    }
   },
  },
  methods: {
   focus() {
    this.$refs.pwd.focus();
   },
   sendCode() {
    //时间
    utils.sendCode(event.target);

    //showLoading
    utils.view.showLoading();

    setTimeout(function() {
     utils.view.dismissLoading();
    }, 5000);
   }
  },
  mounted() {}
 }
</script>
<style lang="less" scoped>
 #payPwd {
  height: auto;
  header {
   text-align: center;
   height: 80px;
   line-height: 90px;
   text-align: center;
  }
  input[type=tel] {
   width: 0.1px;
   height: 0.1px;
   color: transparent;
   position: relative;
   top: 23px;
   background: #000000;
   left: 46px;
   border: none;
   font-size: 18px;
   opacity: 0;
   z-index: -1;
  }
  //光标
  .psd-blink {
   display: inline-block;
   background: url("./img/blink.gif") no-repeat center;
  }
  .pwd-wrap {
   width: 90%;
   height: 50px;
   padding-bottom: 1px;
   margin: 0 auto;
   background: #fff;
   border: 1px solid #ddd;
   display: flex;
   display: -webkit-box;
   display: -webkit-flex;
   cursor: pointer;
   position: absolute;
   left: 0;
   right: 0;
   top: 13%;
   z-index: 10;
   li {
    list-style-type: none;
    text-align: center;
    line-height: 50px;
    -webkit-box-flex: 1;
    flex: 1;
    -webkit-flex: 1;
    border-right: 1px solid #ddd;
    &:last-child {
     border-right: 0;
    }
    i {
     height: 10px;
     width: 10px;
     border-radius: 50%;
     background: #000;
     display: inline-block;
    }
   }
  }
  button {
   position: relative;
   display: block;
   height: 41px;
   text-align: center;
   margin: 0 auto;
   margin-top: 70%;
   padding: 0 20px;
   border-radius: 5px;
   font-size: 16px;
   border: 1px solid #dddddd;
   background: #dddddd;
   color: #000000;
  }
 }
</style>

附加:如果不想使用光标,直接

//去掉 :class="msg.length == 0?'psd-blink':''" 即可
<li><i v-if="msg.length > 0"></i></li>

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

Javascript 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
javascript检查浏览器是否已经启用XX功能
Jul 10 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
windows下vue-cli导入bootstrap样式
Apr 25 Javascript
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
vue将单页面改造成多页面应用的方法
Nov 25 Javascript
vscode下的vue文件格式化问题
Nov 28 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
在Webpack中用url-loader处理图片和字体的问题
Apr 28 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
vue中的自定义分页插件组件的示例
Aug 18 #Javascript
vue 自定义提示框(Toast)组件的实现代码
Aug 17 #Javascript
You might like
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
text-align:justify实现文本两端对齐 兼容IE
2015/08/19 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
解决React在安装antd之后出现的Can't resolve './locale'问题(推荐)
2020/05/03 Javascript
Vue watch响应数据实现方法解析
2020/07/10 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python语言描述最大连续子序列和
2017/12/05 Python
解决python3运行selenium下HTMLTestRunner报错的问题
2018/12/27 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
超市国庆节促销方案
2014/02/20 职场文书
质量负责人任命书
2014/06/06 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
2015年底工作总结范文
2015/05/15 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server
Linux中sftp常用命令整理
2022/06/28 Servers