微信小程序自定义键盘插件wcKeyboard|仿微信数字软键盘|仿支付宝自定义数字键盘|小程序自定义模拟系统键盘

前段时间有开发过一个html5仿支付宝、微信支付数字键盘,在某些情况下自定义数字键盘应用还是蛮多的,比如 购物商城系统 零钱付款 ,会员卡支付,恰好微信小程序没有内部数字键盘组件,这样输入密码就需要自己做一个自定义软键盘了。于是就在之前插件的基础上试着开发出了这个小程序wcKeyboard数字键盘插件。

 

 

 

 

init: function () {
console.log('初始化');var that = this, opt = that.opts;
// 处理传参
__this.setData({__options: {isCloseCls: null,__idx: __idx,isShowPopup: true,//中间值kbVal: '', //设置调试默认值err: false, //键盘错误信息提示debug: opt.debug,id: opt.id,type: opt.type,len: opt.len,complete: opt.complete,max: opt.max,style: opt.style,skin: opt.skin,ok: opt.ok,oninput: opt.oninput,shade: opt.shade,shadeClose: opt.shadeClose,opacity: opt.opacity,anim: opt.anim}
});opt.show && opt.show.call(this);
this.__idx = __idx++;
that.callback();
},
callback: function () {
console.log('事件处理');var that = this, opt = that.opts;
// 清除上一个timer
clearTimeout(util.timer[that.__idx - 1]);
delete util.timer[that.__idx - 1];// 错误提示
function chkErr(cls, str){__this.setData({ '__options.err': [cls, str] });setTimeout(function(){__this.setData({ '__options.err': false });}, 2500);
}
// 键盘值检测
function chkVal(text){if (text.indexOf('.') != -1 && text.substring(text.indexOf('.') + 1, text.length).length == 3) {return;}if (text == '0') {return;}// 输入最大值限制if (opt.max) {if (parseInt(text) >= opt.max && text.indexOf('.') == -1) {chkErr("error", "最大限制值:" + opt.max.toFixed(2));return;}}// 输入手机号码判断if (opt.type && opt.type == 'tel') {var tel = text, _len = parseInt(tel.length), reg = /^0?1[3|4|5|8|7][0-9]\d{8}$/;if (_len > 11) return;if (_len == 11) {if (!reg.test(tel)) {chkErr("error", "手机号码格式有误!");} else {chkErr("success", "验证通过!");}typeof opt.complete == "function" && opt.complete.call(this, text);}}// 输入密码长度判断if (opt.type && opt.type == 'pwd') {var _len = parseInt(text.length);if (_len > opt.len) return;if (_len == opt.len) {typeof opt.complete == "function" && opt.complete.call(this, text);}}return true;
}
// 键盘值输出
function setVal(text){__this.setData({ '__options.kbVal': text });typeof opt.oninput == "function" && opt.oninput.call(this, text);
}
// 处理数字1-9
__this.tapNum = function(e){var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text;var val = kbval + text;if (!chkVal(val)) return;setVal(val);
}// 处理小数点
__this.tapFloat = function(e){var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text;if(kbval == '' || kbval.indexOf('.') != -1){return;}var val = kbval + text;setVal(val);
}// 处理数字0
__this.tapZero = function(e){var kbval = this.data.__options.kbVal, text = e.currentTarget.dataset.text;var val = kbval + text;if (!chkVal(val)) return;setVal(val);
}// 处理删除
__this.tapDel = function(e){var val = this.data.__options.kbVal.substring(0, this.data.__options.kbVal.length - 1);setVal(val);
}// 处理确定按钮事件
__this.tapSure = function(e){var kbval = this.data.__options.kbVal;typeof opt.ok == "function" && opt.ok.call(this, kbval);
}/*---------------------------------------
*/
// 点击遮罩层关闭
__this.shadeTaped = function (e) {if (!opt.shadeClose) return;exportAPI.close(that.__idx);
}
// 点击键盘xclose按钮关闭
__this.xcloseTaped = function(e){exportAPI.close(that.__idx);
}
// 处理销毁函数
opt.end && (util.end[that.__idx] = opt.end);}
<!-- //支付宝键盘布局 -->
<view class="ul"><view class="li kb-limit nbor {{err[0]}}">{{err[1]}}</view><view class="li kb-pwd nbor" wx:if="{{type&&type=='pwd'}}"><view class="keyboard__panel-pwd"><label class="kb-pwdlbl" wx:for="{{len}}" wx:key="index"><input type="password" maxlength="1" value="{{kbVal[index]}}" disabled /></label></view></view><view class="li kb-result nbor" style="display:{{debug ? 'block' : 'none'}};">{{kbVal}}</view><view class="kb-flexbox flexbox"><view class="kb-one flex1"><view class="li kb-number nbor" data-text="1" bind:tap="tapNum">1</view><view class="li kb-number" data-text="2" bind:tap="tapNum">2</view><view class="li kb-number" data-text="3" bind:tap="tapNum">3</view><view class="li kb-number nbor" data-text="4" bind:tap="tapNum">4</view><view class="li kb-number" data-text="5" bind:tap="tapNum">5</view><view class="li kb-number" data-text="6" bind:tap="tapNum">6</view><view class="li kb-number nbor" data-text="7" bind:tap="tapNum">7</view><view class="li kb-number" data-text="8" bind:tap="tapNum">8</view><view class="li kb-number" data-text="9" bind:tap="tapNum">9</view><view class="li kb-float nbor {{type=='tel' || type=='pwd' ? 'disabled' : ''}}" data-text="." bind:tap="tapFloat">.</view><view class="li kb-zero" data-text="0" bind:tap="tapZero">0</view><view class="li kb-xclose" bind:touchstart="xcloseTaped"><image src="/utils/component/wcKeyboard/img/icon__kb-xclose2.png" mode="aspectFit"></image></view></view><view class="kb-two"><view class="li kb-del" bind:tap="tapDel"><image src="/utils/component/wcKeyboard/img/icon__kb-del.png" mode="aspectFit"></image></view><view class="li kb-sure" bind:tap="tapSure">确定</view></view></view>
</view>

小程序自定义数字键盘|仿微信支付、支付宝支付密码键盘相关推荐

  1. android 支付数字键盘,微信小程序自定义数字键盘|仿支付宝、微信支付数字软键盘...

    (此图片来源于网络,如有侵权,请联系删除! ) 前几天有开发过一个html5仿支付宝.微信支付数字键盘,在某些特定场景下自定义数字键盘应用还是蛮广泛的,比如 小程序商城系统 需要零钱支付 ,会员卡支付 ...

  2. uni-app 写小程序 索引列表,仿微信通讯录

    心里认定了一个女孩 就要好好的珍惜对待她,人生不容辜负,你必须要更加努力 .加油 骚年 uni-app 写小程序 索引列表,仿微信通讯录 去uni-app官网 下载插件 indexlist <m ...

  3. 微信小程序:调取数字键盘,没有小数点的解决办法

    通常来说:input框有type这个属性,我们通常使用text.number .checkbox等这些常用的type值来限制输入框的输入. 在微信小程序中,当我们的输入框的type值为number的时 ...

  4. 小程序图片自适应组件 仿微信聊天图片

    (转载请注明出处,本文章内容仅用于学习) 这几天开发小程序有个新需求,需要在聊天群中实现发送图片. 之前做聊天时已经把框架搭好,心想应该只需要后端增加上传图片的一系操作. 当然最后做出来是没问题,但是 ...

  5. mpvue 微信小程序api_基于mpvue构建微信和支付宝小程序(1)

    基于mpvue构建微信和支付宝小程序(1) (1)----- 基础架构篇 why?为啥会有这个系列? 无论是百度和google,关于mpvue构建小程序的项目讲的都是管中窥豹,没有一个系统的讲解. 本 ...

  6. 微信小程序仿微信、支付宝数字密码软键盘wcKeyboard

    微信小程序自定义数字键盘|仿微信支付数字密码键盘|仿支付宝数字键盘 之前有开发过html5+js仿支付宝.微信支付自定义数字键盘,今天就在之前的插件基础上,重新开发出了小程序版本的仿微信.支付宝数字键 ...

  7. 微信小程序-自定义导航栏及返回上一级页面的实现

    一.参考文章 1.微信小程序自定义navigationBar 2.微信小程序返回上一级页面的实现代码 3.小程序开发--常用布局 二.需求 在导航栏中需要显示信息的"未读数量",所 ...

  8. 微信小程序自定义tab-bar遇到的问题及解决方案

    微信小程序自定义tab-bar遇到的问题及解决方案 小程序自定义tab-bar 问题一:需要点击两次才能变成选中装填 解决方案: 问题二:真机查看的时候,切换页面的时候会从上到下 解决方案: 小程序自 ...

  9. (转载)微信小程序自定义头部导航栏

    本文转载自微信小程序自定义头部导航栏 微信小程序自定义头部导航栏 先看下demo的效果: 最终要实现的效果: 在tabbar页面不显示左侧按钮: 分享出去的页面进入后不显示左侧返回按钮: 点击返回按钮 ...

最新文章

  1. 网络营销外包浅析B站破圈运营是如何增强网络营销能力的?
  2. js Array.prototype.slice.call(arguments,0) 理解
  3. Python中的GIL(全局解释器锁)
  4. 带进度的文件复制 - 回复 冷风无泪 的问题
  5. 在ump系统的那半个多月-jqGrid
  6. linux安装unzip及使用
  7. RocketMQ集群知识介绍
  8. python学习方法_十二种学习Python的方法
  9. Android 系统性能优化(51)---APK 安装时间长
  10. 告别抠图!海量免抠PNG,任你选
  11. P2234 [HNOI2002]营业额统计
  12. Mysql解决死锁的问题,防止阻塞
  13. java lambda表达式详解_java8新特性-Lambda表达式的详解(从0开始)
  14. 随心订制linux透明防火墙
  15. c语言的数学题目及答案,C语言练习题
  16. 微信 JSAPI 支付流程
  17. 关于举办2008年注册电气工程师执业资格考试供配电专业(基础)
  18. java web背景颜色表,更改表行背景颜色
  19. 蓝桥杯题目---蓝桥骑士(寻找逐渐递增的子序列 最多个数)
  20. 静态网页/动态网页/伪静态网页/动态HTML

热门文章

  1. element-ui 组件库 el-form 实现
  2. 开始上手docker
  3. .net ef 字段不区分大小写_第六节:框架搭建之EF的Fluent Api模式的使用流程
  4. 北交大计算机保密专业,国内12所神秘的保密学院,毕业就是铁饭碗
  5. impala java api 操作_Impala实践之六:使用Rest Api
  6. python还是java好找工作_你觉得学 Python 还是 Java 更好找工作?
  7. 20200224:跳跃游戏(leetcode55)
  8. jdk tomcat mysql配置_Linux jdk、tomcat、mysql配置
  9. 智能一代云平台(三十五):后端架构再思考
  10. 吴恩达二月升级当爸,Jeff Dean打趣:无监督学习要开始了,需要数据集么?