首页 > 其他分享 >前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

时间:2023-06-23 09:01:59浏览次数:43  
标签:Vue 自定义 val 支付 else passwordArr AffirmStatus 输入 center

前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13166

效果图如下:

cc-defineKeyboard

使用方法


<!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入监测事件 -->

<cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>

/** * 唤起键盘 */

onPayUp() {

this.$refs.CodeKeyboard.show();

},

/*** 支付键盘回调* @param {Object} val */

KeyInfo(val) {

if (val.index >= 6) {

return;

}

// 判断是否输入的是删除键

if (val.keyCode === 8) {

// 删除最后一位

this.passwordArr.splice(val.index + 1, 1)

}

// 判断是否输入的是.

else if (val.keyCode == 190) {

// 输入.无效

} else {

this.passwordArr.push(val.key);

}

uni.showModal({

title: '温馨提示',

content: '输入密码是 = ' + JSON.stringify(this.passwordArr)

})

}

HTML代码实现部分


<template>

<view class="page">

<view>

<view class="pay-title">

<text v-show="AffirmStatus === 1">请输入6位支付密码</text>

<text v-show="AffirmStatus === 2">请设置6位支付密码</text>

<text v-show="AffirmStatus === 3">请确认6位支付密码</text>

</view>

<view class="pay-password" @click="onPayUp">

<view class="list">

<text v-show="passwordArr.length >= 1">●</text>

</view>

<view class="list">

<text v-show="passwordArr.length >= 2">●</text>

</view>

<view class="list">

<text v-show="passwordArr.length >= 3">●</text>

</view>

<view class="list">

<text v-show="passwordArr.length >= 4">●</text>

</view>

<view class="list">

<text v-show="passwordArr.length >= 5">●</text>

</view>

<view class="list">

<text v-show="passwordArr.length >= 6">●</text>

</view>

</view>

<view class="hint">

<text>忘记支付密码?</text>

</view>

</view>

<!-- ref:唯一ref  passwrdType:密码样式pay keyInfo:密码输入返回事件 -->

<cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo"></cc-defineKeyboard>

</view>

</template>

<script>

export default {

components: {

},

data() {

return {

AffirmStatus: 1,

passwordArr: [],

oldPasswordArr: [],

newPasswordArr: [],

afPasswordArr: [],

};

},

onLoad() {

},

methods: {

/**

* 唤起键盘

*/

onPayUp() {

this.$refs.CodeKeyboard.show();

},

/**

* 支付键盘回调

* @param {Object} val

*/

KeyInfo(val) {

if (val.index >= 6) {

return;

}

// 判断是否输入的是删除键

if (val.keyCode === 8) {

// 删除最后一位

this.passwordArr.splice(val.index + 1, 1)

}

// 判断是否输入的是.

else if (val.keyCode == 190) {

// 输入.无效

} else {

this.passwordArr.push(val.key);

}

uni.showModal({

title: '温馨提示',

content: '输入密码是 = ' + JSON.stringify(this.passwordArr)

})

// 判断是否等于6

if (this.passwordArr.length === 6) {

this.passwordArr = [];

this.AffirmStatus = this.AffirmStatus + 1;

}

// 判断到哪一步了

if (this.AffirmStatus === 1) {

this.oldPasswordArr = this.passwordArr;

} else if (this.AffirmStatus === 2) {

this.newPasswordArr = this.passwordArr;

} else if (this.AffirmStatus === 3) {

this.afPasswordArr = this.passwordArr;

} else if (this.AffirmStatus === 4) {

console.log(this.oldPasswordArr.join(''));

console.log(this.newPasswordArr.join(''));

console.log(this.afPasswordArr.join(''));

uni.showToast({

title: '修改成功',

icon: 'none'

})

setTimeout(() => {

uni.navigateBack();

}, 2000)

}

this.$forceUpdate();

}

}

}

</script>

<style scoped lang="scss">

$base: orangered; // 基础颜色

.page {

position: absolute;

left: 0;

top: 0;

width: 100%;

height: 100%;

background-color: #FFFFFF;

}

.pay-title {

display: flex;

align-items: center;

justify-content: center;

width: 100%;

height: 200rpx;

text {

font-size: 28rpx;

color: #555555;

}

}

.pay-password {

display: flex;

align-items: center;

width: 90%;

height: 80rpx;

margin: 20rpx auto;

border: 2rpx solid $base;

.list {

display: flex;

align-items: center;

justify-content: center;

width: 16.666%;

height: 100%;

border-right: 2rpx solid #EEEEEE;

text {

font-size: 32rpx;

}

}

.list:nth-child(6) {

border-right: none;

}

}

.hint {

display: flex;

align-items: center;

justify-content: center;

width: 100%;

height: 100rpx;

text {

font-size: 28rpx;

color: $base;

}

}

</style>

标签:Vue,自定义,val,支付,else,passwordArr,AffirmStatus,输入,center
From: https://www.cnblogs.com/ccVue/p/17498718.html

相关文章

  • 前端Vue自定义数字输入框 带加减按钮的数字输入框组件
    前端Vue自定义数字输入框带加减按钮的数字输入框组件,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13163效果图如下:cc-numbox使用方法<!--title:标题 isSetMax:是否设置最大值 maxNum:最大值--><cc-numboxtitle="商品数量(设......
  • 前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件
    前端Vue自定义简单好用商品分类列表组件侧边栏商品分类组件 ,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13148效果图如下:cc-defineCateList使用方法<!--data:商品列表数组[{navtitle:标题shop:[]展示列表}]@click:商品条目点击事......
  • Java Web自定义MVC框架详解
    最近给学生讲JavaWeb,希望他们能够在学完这部分内容后自己实现一个MVC框架。但是突然发现百度上能搜索到的靠谱的资料并不是很多,有些只是原理没有代码实现,有些有代码实现但是对于初学者来说理解起来还是比较困难,于是决定把自己讲自定义MVC框架的内容放在这里分享给大家,不仅仅是代码......
  • Vue(三):数据绑定(v-bind和v-model)
    数据绑定分为单向数据绑定和双向数据绑定,单向数据绑定就是前面学习的v-bind指令,而双向数据绑定则是下面学习的v-model指令。<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>数据绑定</title><scripttype="text/javascript&qu......
  • localStorage如何设置过期时间 (如何封装自定义localStorage)
    1、创建Storage类定义对应的getsetremoveclearapi通过set函数添加过期时间参数来实现过期时间的记录设置存储时存储当前值和过期时间get取值的时候先验证当前值是否存在以及时间是否大于过期时间如果存在且不大于过期时间既可返回对应的值否则返回空classStorage......
  • Vue进阶(幺叁柒):动态表单校验
    在前期博文《Vue进阶(三十):vue中使用element-ui进行表单验证》、《Vue进阶(幺幺叁):关于vue.jselementui表单验证this.$refs[formName].validate()的问题》、《Vue进阶(幺贰幺):表单校验注意事项》中主要讲解了form表单校验应遵守的约定及常见问题解决方法。在实现动态表单,且表单项为后......
  • Vue(二):指令语法之v-bind
    一、什么是指令语法vue中模板语法有两大类,第一类是插值语法,第二类就是指令语法。1.插值语法插值语法在上一篇“vue的简单使用”中已经提到了。功能:用于解析标签体的内容写法:{{XXX}},XXX为js表达式2.指令语法功能:用于解析标签(包括标签属性、标签事件、标签体内容等)本文来学......
  • 【技术积累】Vue.js中的基础概念与语法【一】
    写在前面学习Vue之前最好有前端三驾马车的基础【HTML+CSS+JavaScript】笔者接了一个从头开发的Vue项目,由于公司急着要,没有时间慢慢像在学校里学了,只能边学边做,现在项目雏形已经做的差不多了,因此正好以自己的方式来写笔记笔者接项目的时候Vue零基础,前端基础也是除了div几个标签......
  • Vue(一):简单使用
    1.引入js要对vue进行使用,首先要引入相关的js文件:<scripttype="text/javascript"src="../js/vue.js"></script>此处我将vue.js下载到了本地进行引用。2.准备容器<!--容器--><divid="root"><h1>Hello,{{name}}</h1>......
  • vue+axios实现token无感刷新
    原文出处:https://www.jb51.net/javascript/286094r4h.htm 通常,对于一些需要记录用户行为的系统,在进行网络请求的时候都会要求传递一下登录的token。不过,为了接口数据的安全,服务器的token一般不会设置太长,根据需要一般是1-7天的样子,token过期后就需要重新登录。不过,频繁的登录会......