前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序之支付密码输入demo

微信小程序之支付密码输入demo

作者头像
tandaxia
发布2018-09-27 15:43:50
4.5K1
发布2018-09-27 15:43:50
举报
文章被收录于专栏:谈补锅

  在小程序中实现支付密码的输入,要解决几个问题:   1、小程序要想唤起键盘,必须要借助input控件。通过input控件和其属性focus来唤起和隐藏输入键盘。

  2、要让input控件不可见。让光标和输入的字符都不可见,这里是把input控件定位到左边不可见范围。

先看实现后的效果图:

实现demo代码:

1、页面代码

代码语言:javascript
复制
<view catchtap='showInputLayer' class="btn_pay">立即支付</view>
<!-- 密码输入框 -->
<view wx:if='{{showPayPwdInput}}'>
    <view class='bg_layer'></view>
    <view class='input_main'>
        <view class='input_title'>
            <view class='input_back' catchtap='hidePayLayer'><text></text></view>
            <text>输入支付密码</text>
        </view>
        <view class='input_tip'><text>使用会员卡余额支付需要验证身份,验证通过后才可进行支付。</text></view>
        <view class='input_row' catchtap='getFocus'>
            <view class='pwd_item' wx:for='{{6}}' wx:key='item' wx:for-index='i'>
                <text wx:if='{{pwdVal.length>i}}'></text>
            </view>
        </view>
        <view class='forget_pwd' catchtap='hidePayLayer'>忘记密码</view>
        <input class='input_control' password type='number' focus='{{payFocus}}' bindinput='inputPwd' maxlength='6'/>
    </view>
</view>

2、js代码

代码语言:javascript
复制
//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    showPayPwdInput: false,  //是否展示密码输入层
    pwdVal: '',  //输入的密码
    payFocus: true, //文本框焦点
  },
  onLoad: function () {
    this.showInputLayer();
  },
  /**
   * 显示支付密码输入层
   */
  showInputLayer: function(){
    this.setData({ showPayPwdInput: true, payFocus: true });
  },
  /**
   * 隐藏支付密码输入层
   */
  hidePayLayer: function(){
    
    var val = this.data.pwdVal;

    this.setData({ showPayPwdInput: false, payFocus: false, pwdVal: '' }, function(){
      wx.showToast({
        title: val,
      })
    });

  },
  /**
   * 获取焦点
   */
  getFocus: function(){
    this.setData({ payFocus: true });
  },
  /**
   * 输入密码监听
   */
  inputPwd: function(e){
      this.setData({ pwdVal: e.detail.value });

      if (e.detail.value.length >= 6){
        this.hidePayLayer();
      }
  }
})

3、样式

代码语言:javascript
复制
.btn_pay{
  margin: 100rpx auto; width: 600rpx; height: 100rpx; line-height: 100rpx; border-radius: 100rpx;
  background-color: #d3a95a; color: #fff; font-size: 36rpx; text-align: center; 
}
/* 支付密码css start */
.bg_layer{
  position: fixed; left: 0; top: 0; bottom: 0; right: 0;
  background-color: rgba(0, 0, 0, 0.6); z-index: 9998;
}
.input_main{
    position: fixed; left: 0; bottom: 500rpx; width: 100%; height: 394rpx;
    background-color: #fff; z-index: 9999;
}
.input_title{
    width: 100%; height: 90rpx; line-height: 90rpx; text-align: center; 
    font-size: 32rpx; border-bottom: 1rpx solid #e2e2e2;
}
.input_back{
    position: absolute; left: 0; top: 0;
    width: 80rpx; height: 90rpx; display: flex; justify-content: center; align-items: center;
}
.input_back text{
  width: 20rpx;
  height: 20rpx;
  background-color: white;
  border: 1rpx solid #aaa;
  border-width: 5rpx 0 0 5rpx;
  transform: rotate(-45deg);
}

.input_tip{  margin: 30rpx; font-size: 24rpx; color: #888; }

/* 密码掩码模拟 */
.input_row{
  width: 690rpx; margin: 0 auto; height: 98rpx; position: relative;
  display: flex; align-items: center; border: 1rpx solid #e2e2e2; border-radius: 20rpx;
}
.input_row .pwd_item{
  flex: 1; display: flex; align-items: center; justify-content: center; 
  height: 100%; border-right: 1rpx solid #e2e2e2; position: relative;
}
.pwd_item:nth-last-of-type(1) { border-right: 0; } 
.pwd_item text { 
  width: 30rpx; height: 30rpx; border-radius: 30rpx; background-color: #555;
}


.forget_pwd{ 
  float: right; margin: 30rpx; width: 100rpx; text-align: right; font-size: 24rpx; color: #ff7800;
}

/* 文本输入框位置: 设置到左边隐藏 */
.input_control { 
  position: relative; left: -300rpx; bottom: 0; width: 100rpx; height: 100rpx;
}

DEMO地址:https://github.com/xiaotanit/Tan_PayPwdInput

版权声明


作者:TDX

出处:博客园TDX的技术博客--http://www.cnblogs.com/tandaxia

您的支持是对博主最大的鼓励,感谢您的认真阅读。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档