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 相关文章推荐
javascript 一些用法小结
Sep 11 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
JS 数字转换研究总结
Dec 26 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
深入理解redux之compose的具体应用
Jan 12 Javascript
JavaScript数组排序功能简单实现
May 14 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
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
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
jQuery布局插件UI Layout简介及使用方法
2013/04/03 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python全局变量用法实例分析
2016/07/19 Python
Python for循环生成列表的实例
2018/06/15 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python 从list中随机取值的方法
2020/11/16 Python
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
工作表现评语
2014/01/19 职场文书
电气个人求职信范文
2014/02/04 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
李强感恩观后感
2015/06/17 职场文书
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
OpenCV实现反阈值二值化
2021/11/17 Java/Android
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server