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 定时器调用传递参数的方法
Nov 12 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
JavaScript中的条件判断语句使用详解
Jun 03 Javascript
javascript表格的渲染组件
Jul 03 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
Oct 25 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
Dec 13 Javascript
JavaScript中数组Array方法详解
Feb 27 Javascript
vue中对象数组去重的实现
Feb 06 Javascript
jQuery实现雪花飘落效果
Aug 02 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批量删除数据
2007/01/18 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
javascript打印输出json实例
2013/11/11 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
详解vue移动端项目的适配(以mint-ui为例)
2018/08/17 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
Python中文字符串截取问题
2015/06/15 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
对python中UDP,socket的使用详解
2019/08/22 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
幼儿教师暑期培训方案
2014/08/27 职场文书
小学庆六一活动总结
2014/08/28 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Golang并发工具Singleflight
2022/05/06 Golang