记录一个类似支付密码的弹窗写法,实现是否免密功能。如图:

index.js


  import Taro, { Component } from '@tarojs/taro'
  import { View, Button, Text } from '@tarojs/components'
  import { AtInput, AtList, AtListItem, AtIcon, AtButton,AtToast} from "taro-ui"
  import './index.scss'
class Index extends Component {
constructor() {
super(...arguments)
this.state = ({
switchIsCheck: false,
showPayPwdInput: false,
payFocus: true,
pwdVal: '',
toastText: '',
isOpened: false
    })
}
// 打开关闭免密 用了在Switch开关上面遮挡一个透明的View,来显示弹窗,控制Switch的开关
switchIsCheckBtn = () => {
this.setState({
showPayPwdInput: true
})
}
closeClick = () => {
this.setState({
showPayPwdInput: false
})
}
// 检验密码 输完6位数字密码时候调用
hidePayLayer = () => {
let val = this.state.pwdVal
this.setState({
showPayPwdInput: false,
pwdVal: ''
}, () => {
Taro.request({
method: 'post',
url:
API.URL,
header: {
'Content-Type': 'application/json',
'Data-Type':'json',
'weixinauth': this.state.tookenData
},
data:JSON.stringify({
password:val
}),
success: res => {
if (res.data.status == ) {
this.setState({
switchIsCheck: !this.state.switchIsCheck
})
}else{
this.setState({
isOpened: true,
toastText: '密码错误'
})
}
}
})
})
}
// 密码输入
inputPwd = (e) => {
this.setState({
pwdVal: e.detail.value
},() => {
if (e.detail.value.length >= ) {
this.hidePayLayer()
}
})
}
render() {
const {isOpened, toastText} = this.state
return (
<View className='box-passward'>
<View className="password-top">
<View className="no-password">
<AtList>
<AtListItem title='密码' extraText='●●●●●●' arrow='right' onClick={this.handleClickChange} />
<AtListItem
switchColor='#40ac4b'
title='我要免密'
isSwitch
onSwitchChange={this.handleChange}
switchIsCheck={this.state.switchIsCheck}
/>
<View className="password-btn" onClick={this.switchIsCheckBtn}></View>
</AtList>
<View className='forget-password' onClick={this.forgetPwd}>忘记密码?</View>
</View>
</View>
{
this.state.showPayPwdInput ?
<View className="dialog">
<View className="input_main">
<View className="input_title">
<AtIcon onClick={this.closeClick} value='close' size=''className="input_title-close"></AtIcon>
<Text>免密修改</Text>
</View>
<View className="write-title">请输入密码</View>
<View className="input_row">
{
[,,,,,].map((item,index) => {
return (
<View key={index} className="pwd_item">
{
this.state.pwdVal.length>index ? <Text className="pwd_itemtext"></Text> : null
}
</View>
)
})
}
</View>
<Input focus={this.state.payFocus} password type="number" maxLength="" onInput={this.inputPwd} className="input_control"></Input>
</View>
</View>
: null
}
          <AtToast isOpened={isOpened} duration={1000} text={toastText} onClose={this.handleClose}/>
      </View>
)
}
}
export default Index
 

index.scss

.box-passward {
display: flex;
flex-direction: column;
height: 100vh;
background: #f2f2f2;
.signature-passward-bg {
background: linear-gradient(#21b459, #24a262);
position: relative;
}
.tabContant-certificate {
padding-top: %;
.image-certificate{
width:360px;
height: 360px;
margin: auto;
image{
width: %;
height: %;
}
}
.text-certificate{
font-size:30px;
width:508px;
margin: auto;
}
}
.password-top{
margin-top:32px;
.no-password{
.at-list__item .item-extra__info{
font-size: 24px;
}
}
.at-list{
border-top: 1px solid #e5e5e5;
border-bottom: 1px solid #e5e5e5;
}
.password-btn{
width:105px;
height: 70px;
position: absolute;
right:35px;
bottom:20px;
}
.forget-password{
padding:20px;
color:#40ac4b;
font-size: 28px;
}
.my-body {
.account-tip {
width: %;
color: #;
font-size: 28px;
line-height: 50px;
padding: 30px 20px;
font-family: "PingFang-SC-Medium";
.active{
color: #40ac4b;
font-size: 26px;
}
}
.my-body-content {
background-color: #fff;
border-top:1px solid #e5e5e5;
border-bottom:1px solid #e5e5e5;
}
.at-button{
margin:60px 30px;
}
}
}
.dialog {
width: %;
height: %;
position: fixed;
left:;
top:;
z-index: ;
background: rgba(,,,0.5);
.input_main {
position: fixed;
left: %;
bottom: %;
margin-bottom:-180px;
margin-left: -%;
width: %;
height: 360px;
background-color: #fff;
z-index: ;
border-radius: 10px;
.input_title {
width: %;
height: 135px;
line-height: 135px;
text-align: center;
font-size: 40px;
.input_title-close{
color:rgb(,,);
float: left;
margin-top:50px;
margin-left: 40px;
}
.input_back {
position: absolute;
left: ;
top: ;
width: 80px;
height: 90px;
display: flex;
justify-content: center;
align-items: center;
.input_backtext {
width: 20px;
height: 20px;
background-color: white;
border: 2px solid #aaa;
border-width: 5px 5px;
transform: rotate(-45deg);
}
}
}
.write-title{
color:rgb(,,);
font-size: 30px;
padding-left:40px;
margin-bottom: 30px;
}
.input_row {
width: %;
margin: 40px;
height: 98px;
position: relative;
display: flex;
align-items: center;
border: 2px solid rgb(,,);
.pwd_item{
flex: ;
display: flex;
align-items: center;
justify-content: center;
height: %;
border-right: 2px solid rgb(,,);
position: relative;
.pwd_itemtext {
width: 30px;
height: 30px;
border-radius: 30px;
background-color: #;
}
}
.pwd_item:last-child {
border-right: none;
}
}
.forget_pwd {
float: right;
margin: 30px;
width: 100px;
text-align: right;
font-size: 24px;
color: #ff7800;
}
.input_control {
position: relative;
left: -300px;
bottom: ;
width: 100px;
height: 100px;
}
}
}
}

Taro -- 微信小程序密码弹窗的更多相关文章

  1. Taro -- 微信小程序wxParse达到html转换wxml

    Taro微信小程序可以用wxParse来达到html转换wxml的效果:https://github.com/NervJS/taro-components-test/blob/master/src/p ...

  2. Taro -- 微信小程序登录

    Taro微信小程序登录 1.调用Taro.login()获取登录凭证code: 2.调用Taro.request()将code传到服务器: 3.服务器端调用微信登录校验接口(appid+appsecr ...

  3. 微信小程序自定义弹窗wcPop插件|仿微信弹窗样式

    微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的 ...

  4. Taro 微信小程序 上传文件到minio

    小程序前端上传文件不建议直接引用minio的js npm包,一来是这个包本身较大,会影响小程序的体积,二来是ak sk需要放到前端存储,不够安全,因此建议通过请求后端拿到签名数据后上传. 由于小程序的 ...

  5. taro 微信小程序原生作用域获取

    在 Taro 的页面和组件类中,this 指向的是 Taro页面或组件实例. 但是一般我们需要获取 Taro的页面和组件 所对应的 小程序原生页面和组件实例,这个时候我们可以通过 this.$scop ...

  6. 微信小程序---密码输入

    设计支付密码的输入框 效果如下: 源码:github地址:https://github.com/fiveTree/-_- 干货: <view class="pay"> ...

  7. 微信小程序底部弹窗动画

    第一步,在组件里编写弹窗的代码 <!-- 活动类型弹框 --> <view class='bottomModel' wx:if="{{modelFlag}}" c ...

  8. 微信小程序 - 自定义弹窗组件

    2019-01-06:简化了一些代码,以及增加了可用性. // 弹窗配置 dialogConfig: { // 弹窗 dialogvisible: false, options: { // 显示关闭按 ...

  9. 微信小程序自定义弹窗(可通用)

    效果图 .wxml <cover-view class='mask' wx:if='{{isShow}}'> <cover-view class='modal'> <co ...

随机推荐

  1. 洛谷 P4570 BZOJ 2460 [BJWC2011]元素

    Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里 ...

  2. winXP 系统下ubuntu-12.04 硬盘安装

    目地:实现XP ubuntu双系统,引导可选择. 出处:根查阅网络资料和自己的安装体检,记录如是. 系统版本:windowsXP  SP3   Ubuntu 12.04 工具资源:grup4dos 2 ...

  3. Spring MVC Captcha 验证码

    本文专为不想一遍遍手写验证码代码的”懒猿“而生,只需要添加部分配置文件,拷贝一个控制层代码,就能在页面中方便使用.话不多说,进入主题: 一. Spring MVC 环境实现方式: 1.1 spring ...

  4. 手把手教你做echarts图表系列之组织结构图

    在实际项目中使用echarts越来越多了,今天从一个组织结构图开始,手把手教大家开发echarts图表. 公司里的组织结构图如下: 可以参考echarts入门教程:http://echarts.bai ...

  5. python大佬养成计划----HTML DOM

    什么是DOM? DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口.HTML DOM 定义了访问和操作 HTML 文档的标准方法.DOM ...

  6. 从 Quora 的 187 个问题中学习机器学习和NLP

    从 Quora 的 187 个问题中学习机器学习和NLP 原创 2017年12月18日 20:41:19 作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai ...

  7. jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法<转>

    jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法 起因 之前并没有关注这块,直到:您的应用被拒绝,原因:xplay5sQ心里点击笑值点击拍照显示停止运行,查看发过来 ...

  8. 高通Camera bring up软件流程【转】

    本文转载自:http://blog.csdn.net/liwei16611/article/details/51279658 高通camera bring up分为两种类型:YUV和bayerbrin ...

  9. docker-dnsmasq使用

    docker-dnsmasq支持通过web页面配置域名映射,镜像地址:https://hub.docker.com/r/jpillora/dnsmasq 使用步骤如下: 1.在Docker宿主上创建 ...

  10. ORA-00972

    SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') as 日期时间 from dual;select to_char(sysdate,'YY ...