立即支付
当前位置:   article > 正文

微信小程序模拟支付界面

微信小程序模拟支付

有些时候 遇到一些类似于银行卡输入密码或者微信支付输入密码的类似需求 刚刚开始的时候 我第一反应就是放几个input  但是呢 每次输入的时候 都会重新调用软键盘 用户体验极其不好 下面先看下类似的原型

 代码  以小程序为例

html

  1. <view catchtap='showInputLayer' class="btn_pay">立即支付</view>
  2. <!-- 密码输入框 -->
  3. <view wx:if='{{showPayPwdInput}}'>
  4. <view class='bg_layer'></view>
  5. <view class='input_main'>
  6. <view class='input_title'>
  7. <view class='input_back' catchtap='hidePayLayer'><text></text></view>
  8. <text>输入支付密码</text>
  9. </view>
  10. <view class='input_tip'><text>使用会员卡余额支付需要验证身份,验证通过后才可进行支付。</text></view>
  11. <view class='input_row' catchtap='getFocus'>
  12. <view class='pwd_item' wx:for='{{6}}' wx:key='item' wx:for-index='i'>
  13. <text wx:if='{{pwdVal.length>i}}'></text>
  14. </view>
  15. </view>
  16. <view class='forget_pwd' catchtap='hidePayLayer'>忘记密码</view>
  17. <input class='input_control' password type='number' focus='{{payFocus}}' bindinput='inputPwd' maxlength='6'/>
  18. </view>
  19. </view>

js

  1. //获取应用实例
  2. const app = getApp()
  3. Page({
  4. data: {
  5. showPayPwdInput: false, //是否展示密码输入层
  6. pwdVal: '', //输入的密码
  7. payFocus: true, //文本框焦点
  8. },
  9. onLoad() {
  10. this.showInputLayer();
  11. },
  12. /**
  13. * 显示支付密码输入层
  14. */
  15. showInputLayer(){
  16. this.setData({ showPayPwdInput: true, payFocus: true });
  17. },
  18. /**
  19. * 隐藏支付密码输入层
  20. */
  21. hidePayLayer(){
  22. /**获取输入的密码**/
  23. var val = this.data.pwdVal;
  24. /**在这调用支付接口**/
  25. this.setData({ showPayPwdInput: false, payFocus: false, pwdVal: '' }, function(){
  26. /**弹框**/
  27. wx.showToast({
  28. title: val,
  29. })
  30. });
  31. },
  32. /**
  33. * 获取焦点
  34. */
  35. getFocus(){
  36. this.setData({ payFocus: true });
  37. },
  38. /**
  39. * 输入密码监听
  40. */
  41. inputPwd(e){
  42. this.setData({ pwdVal: e.detail.value });
  43. if (e.detail.value.length >= 6){
  44. this.hidePayLayer();
  45. }
  46. }
  47. })

css

  1. /* pages/category/index.wxss */.btn_pay{
  2. margin: 100rpx auto; width: 600rpx; height: 100rpx; line-height: 100rpx; border-radius: 100rpx;
  3. background-color: #d3a95a; color: #fff; font-size: 36rpx; text-align: center;
  4. }
  5. /* 支付密码css start */
  6. .bg_layer{
  7. position: fixed; left: 0; top: 0; bottom: 0; right: 0;
  8. background-color: rgba(0, 0, 0, 0.6); z-index: 9998;
  9. }
  10. .input_main{
  11. position: fixed; left: 0; bottom: 500rpx; width: 100%; height: 394rpx;
  12. background-color: #fff; z-index: 9999;
  13. }
  14. .input_title{
  15. width: 100%; height: 90rpx; line-height: 90rpx; text-align: center;
  16. font-size: 32rpx; border-bottom: 1rpx solid #e2e2e2;
  17. }
  18. .input_back{
  19. position: absolute; left: 0; top: 0;
  20. width: 80rpx; height: 90rpx; display: flex; justify-content: center; align-items: center;
  21. }
  22. .input_back text{
  23. width: 20rpx;
  24. height: 20rpx;
  25. background-color: white;
  26. border: 1rpx solid #aaa;
  27. border-width: 5rpx 0 0 5rpx;
  28. transform: rotate(-45deg);
  29. }
  30. .input_tip{ margin: 30rpx; font-size: 24rpx; color: #888; }
  31. /* 密码掩码模拟 */
  32. .input_row{
  33. width: 690rpx; margin: 0 auto; height: 98rpx; position: relative;
  34. display: flex; align-items: center; border: 1rpx solid #e2e2e2; border-radius: 20rpx;
  35. }
  36. .input_row .pwd_item{
  37. flex: 1; display: flex; align-items: center; justify-content: center;
  38. height: 100%; border-right: 1rpx solid #e2e2e2; position: relative;
  39. }
  40. .pwd_item:nth-last-of-type(1) { border-right: 0; }
  41. .pwd_item text {
  42. width: 30rpx; height: 30rpx; border-radius: 30rpx; background-color: #555;
  43. }
  44. .forget_pwd{
  45. float: right; margin: 30rpx; width: 100rpx; text-align: right; font-size: 24rpx; color: #ff7800;
  46. }
  47. /* 文本输入框位置: 设置到左边隐藏 */
  48. .input_control {
  49. position: relative; left: -300rpx; bottom: 0; width: 100rpx; height: 100rpx;
  50. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/258457
推荐阅读
相关标签