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 相关文章推荐
&amp;lt;script defer&amp;gt; defer 是什么意思
May 10 Javascript
Javascript之旅 对象的原型链之由来
Aug 25 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
js关闭子窗体刷新父窗体实现方法
Dec 04 Javascript
JS中表单的使用小结
Jan 11 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
JavaScript中循环遍历Array与Map的方法小结
Mar 12 Javascript
超简单的Vue.js环境搭建教程
Mar 17 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
深入浅出vue图片路径的实现
Sep 04 Javascript
vue实现百度语音合成的实例讲解
Oct 14 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
PHP5中MVC结构学习
2006/10/09 PHP
第四节--构造函数和析构函数
2006/11/16 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python如何使用函数做字典的值
2019/11/30 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
不用游标的SQL语句有哪些
2012/09/07 面试题
艺术专业大学生自我评价
2013/09/22 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
教师工作能力自我评价
2015/03/04 职场文书
个人求职自荐信范文
2015/03/06 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
2015年网络舆情工作总结
2015/07/24 职场文书
Jsonp劫持学习
2021/04/01 PHP
MySQL令人咋舌的隐式转换
2021/04/05 MySQL