立即支付搜索查看编辑修改首页UNITYNODEJSPYTHONAIGITPHPGOCEF3JAVAHTMLCSS搜索Gausst松鼠会 这个屌丝很懒,什么也没留下! 关注作者热门标签jqueryHTMLCSSPHPASPPYTHONGOAICC++C#PHOTOSHOPUNITYiOSandroidvuexml爬虫SEOLINUXWINDOWSJAVAMFCCEF3CADNODEJSGITPyppeteerarticle热门文章1解决Bilibili的Android版无法播放视频的问题2Linux语言写的高通滤波,嵌入式开发10种常见数字滤波算法3MQTTBox客户端下载网址_mqttbox下载4nui-app介绍_nuiapp5【无标题】springboot版本升级引起的kotlin-stdlib版本冲突_kotlin-stdlib-1.2.71.jar6Linux安装GitLab教程_gitlab linux安装7【HarmonyOS】API9沉浸式状态栏8微信小程序 java ssm 87.汽车保养系统小程序的设计与实现(完整源码+数据库文件+万字文档+保姆级视频部署教程+配套环境)9k8s详细教程10c++中两个key确定一个value_探究JDK1.8中HashMap的实现原理当前位置: article > 正文 微信小程序模拟支付界面 作者:Gausst松鼠会 | 2024-03-17 22:40:00 赞踩微信小程序模拟支付 有些时候 遇到一些类似于银行卡输入密码或者微信支付输入密码的类似需求 刚刚开始的时候 我第一反应就是放几个input 但是呢 每次输入的时候 都会重新调用软键盘 用户体验极其不好 下面先看下类似的原型 代码 以小程序为例 html <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> js //获取应用实例const app = getApp() Page({ data: { showPayPwdInput: false, //是否展示密码输入层 pwdVal: '', //输入的密码 payFocus: true, //文本框焦点 }, onLoad() { this.showInputLayer(); }, /** * 显示支付密码输入层 */ showInputLayer(){ this.setData({ showPayPwdInput: true, payFocus: true }); }, /** * 隐藏支付密码输入层 */ hidePayLayer(){ /**获取输入的密码**/ var val = this.data.pwdVal; /**在这调用支付接口**/ this.setData({ showPayPwdInput: false, payFocus: false, pwdVal: '' }, function(){ /**弹框**/ wx.showToast({ title: val, }) }); }, /** * 获取焦点 */ getFocus(){ this.setData({ payFocus: true }); }, /** * 输入密码监听 */ inputPwd(e){ this.setData({ pwdVal: e.detail.value }); if (e.detail.value.length >= 6){ this.hidePayLayer(); } }}) css /* pages/category/index.wxss */.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;} 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/258457推荐阅读articleandroid+4.4+jni闪退,使用Android Profiler时,应用不断崩溃...我的应用正在执行一些位置跟踪并在需要时更新数据库,该应用已运行2天,没有任何问题。 现在,我正在尝试使用Android ... 赞踩article访问Docker内的Kafka的几种办法_requirement failed: inter.bro...Question之前在构建自己的Kakfa-Cluster的Docker镜像时,遇到一个映射关系的问题。其实,感觉这是K... 赞踩article解决WSL2/Linux ll command not found_wsl: command not...解决WSL2/Linux ll command not found 现象原因解决方式现象刚刚安装完WSL2,发现ll等命... 赞踩article2021计算机职业适应性测试考什么,2021河北省高职单招考试二类职业适应性测试考试大纲......原标题:2021河北省高职单招考试二类职业适应性测试考试大纲2021河北省高职单招考试二类职业适应性测试考试大纲0 1考... 赞踩articlePython代码块及缓存机制原理详解_python缓存机制...字节码缓存是指Python在执行某个模块代码时,将其转换成字节码并缓存起来。如果下次再执行该模块代码时,Python会直... 赞踩article15 Awesome Sites with Stuning Stock HD Videos_sex ...From:http://www.createthebridge.com/blog/free-hd-video-and-v... 赞踩article山西省对口升学计算机学什么,2021年山西省对口升学各专业类别具体录取办法是什么?......2021年高职单招升学一对一咨询高职单招小艺老师:L17032509297(微信)2021年山西省对口升学各专业类别具体... 赞踩articleMATLAB图像处理简单程序(1)—实现几何、算数简单变换,滤镜处理以及图片变换效果展示_利用 ma...1.对tu1、tu2、tu3进行图像合成,利用几何变换、算术运算生成合成图像。(要求合成图像的图书馆及湖面合理拼接,天鹅... 赞踩articleSpringBoot+Ajax+redis实现隐藏重要接口地址...本篇文章主要讲诉使用SpringBoot项目配合Ajax和redis实现隐藏重要接口地址,这里我以隐藏秒杀地址为例。以上... 赞踩article基于LightGBM的回归任务案例_lightgbm回归示例...LightGBM或“Light Gradient Boosting Machine”是一个开源的高性能梯度增强框架,专为... 赞踩article职高学计算机怎么才能考本科,职高可以考大学吗 职高能不能上本科...很多成绩不是很理想的中学生会选择上一所职业高中,也就是我们所说的职高,文有途网小编给大家整理了职高可以考的大学院校,供参... 赞踩articlecefsharpe.winforms.netcore 92.0.26 部署心得_cefsharp.w...一、开发环境: VS 2019 社区版 dotnet core 3.1二、winform 就一个 form1 界面。三、... 赞踩articleVue2项目上线打包优化_vue2打包优化...vue项目各种上线优化汇总,不定时更新_vue2打包优化vue2打包优化 ... 赞踩articlec# http请求封装_c# responseentity...看到别人写的代码copy一下,作为备份。/// <summary> /// Restful客户端 /// &... 赞踩articleERROR: your rosdep installation has not been initi...这个错误表示你的 rosdep 还没有初始化。rosdep 是一个 ROS 中的系统依赖管理工具,用于安装和配置需要的系... 赞踩articleCentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口_centos dock...CentOS7使用docker 启动容器后 , 宿主机连接访问不到容器的端口注意第一种方法是在网上找的 , 我并没有执行... 赞踩articleUnity-Http协议请求下载系列2:HttpWebRequest封装_unity beginge...上篇文章介绍了Http请求的接口封装,本篇具体介绍基于HttpWebRequest接口实现的资源请求下载。HttpWeb... 赞踩articleC# vb .net实现裁剪效果特效滤镜_vb.net快速计算图片清晰度之图像裁剪...在.net中,如何简单快捷地实现Photoshop滤镜组中的裁剪效果效果呢?答案是调用SharpImage!专业图像特效... 赞踩articleVue打包后白屏问题与index.html缓存...问题vue项目打包后,在非首次线上替换vue生成文件时,浏览器在之后首次打开页面,可能出现白屏、缓存旧页面等情况。那么该... 赞踩article苍穹外卖项目解读(四) 微信小程序支付、定时任务、WebSocket_wechat: appid: ...苍穹外卖项目解读(四) 微信小程序支付、定时任务、WebSocket_wechat: appid: wxffb3637a... 赞踩相关标签android+4.4+jni闪退KafkaDockerlinuxwsl22021计算机职业适应性测试考什么缓存文档山西省对口升学计算机学什么matlab图像处理计算机视觉spring bootajaxjava后端软件工程redis数据挖掘人工智能机器学习职高学计算机怎么才能考本科c#html5big data
赞
踩
有些时候 遇到一些类似于银行卡输入密码或者微信支付输入密码的类似需求 刚刚开始的时候 我第一反应就是放几个input 但是呢 每次输入的时候 都会重新调用软键盘 用户体验极其不好 下面先看下类似的原型
代码 以小程序为例
html
<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>
js
//获取应用实例const app = getApp() Page({ data: { showPayPwdInput: false, //是否展示密码输入层 pwdVal: '', //输入的密码 payFocus: true, //文本框焦点 }, onLoad() { this.showInputLayer(); }, /** * 显示支付密码输入层 */ showInputLayer(){ this.setData({ showPayPwdInput: true, payFocus: true }); }, /** * 隐藏支付密码输入层 */ hidePayLayer(){ /**获取输入的密码**/ var val = this.data.pwdVal; /**在这调用支付接口**/ this.setData({ showPayPwdInput: false, payFocus: false, pwdVal: '' }, function(){ /**弹框**/ wx.showToast({ title: val, }) }); }, /** * 获取焦点 */ getFocus(){ this.setData({ payFocus: true }); }, /** * 输入密码监听 */ inputPwd(e){ this.setData({ pwdVal: e.detail.value }); if (e.detail.value.length >= 6){ this.hidePayLayer(); } }})
css
/* pages/category/index.wxss */.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;}