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 24 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
js和jquery分别验证单选框、复选框、下拉框
Dec 17 Javascript
基于javascript编写简单日历
May 02 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
通过vue写一个瀑布流插件代码实例
Sep 07 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 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
php 保留小数点
2009/04/21 PHP
php实现rc4加密算法代码
2012/04/25 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
php数组随机排序实现方法
2015/06/13 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
原生js二级联动效果
2017/06/20 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
用实例分析Python中method的参数传递过程
2015/04/02 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Python对列表的操作知识点详解
2019/08/20 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
六道php面试题附答案
2014/06/05 面试题
几道数据库的面试题或笔试题
2014/05/31 面试题
模具毕业生推荐信
2014/02/15 职场文书
《充气雨衣》教学反思
2014/04/07 职场文书
北京奥运会口号
2014/06/21 职场文书
中小学生学籍证明
2014/10/25 职场文书
运动会加油稿50字
2015/07/21 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Python matplotlib多个子图绘制整合
2022/04/13 Python