android 支付数字键盘,微信小程序自定义数字键盘|仿支付宝、微信支付数字软键盘...
(此图片来源于网络,如有侵权,请联系删除! )
前几天有开发过一个html5仿支付宝、微信支付数字键盘,在某些特定场景下自定义数字键盘应用还是蛮广泛的,比如 小程序商城系统 需要零钱支付 ,会员卡支付,心想着微信小程序没有内部数字键盘组件,这样输入密码就需要自己做一个自定义软键盘了。于是就在之前插件的基础上试着开发出了这个小程序wcKeyboard数字键盘插件。
(此图片来源于网络,如有侵权,请联系删除! )
(此图片来源于网络,如有侵权,请联系删除! )
可以自定义输入最大值限制,当输入超过最大值时候,会有警告提示:
(此图片来源于网络,如有侵权,请联系删除! )
还可以自定义键盘背景色 style: ' background: xxx; ',最好设置background颜色较浅为佳:
(此图片来源于网络,如有侵权,请联系删除! )
(此图片来源于网络,如有侵权,请联系删除! )
小程序数字键盘插件内置手机号码验证,当type:'tel'时,输入手机号码为11位会自动检测是否合法:
(此图片来源于网络,如有侵权,请联系删除! )
当配置type:'pwd', 则为密码键盘,可设置密码位数 len: 6
(此图片来源于网络,如有侵权,请联系删除! )
可以随意切换微信键盘、支付宝键盘 skin: wechat/alipay 两种皮肤风格:
(此图片来源于网络,如有侵权,请联系删除! )
(此图片来源于网络,如有侵权,请联系删除! )
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">
class="li kb-limit nbor {{err[0]}}">{{err[1]}}
class="li kb-pwd nbor" wx:if="{{type&&type=='pwd'}}"> class="keyboard__panel-pwd"> class="kb-pwdlbl" wx:for="{{len}}" wx:key="index"> type="password" maxlength="1" value="{{kbVal[index]}}" disabled />
class="li kb-result nbor" style="display:{{debug ? 'block' : 'none'}};">{{kbVal}}
class="li kb-xclose nbor" bind:touchstart="xcloseTaped"> src="/utils/component/wcKeyboard/img/icon__kb-xclose.png" mode="aspectFit">
class="li kb-number nbor" data-text="1" bind:tap="tapNum">1
class="li kb-number" data-text="2" bind:tap="tapNum">2
class="li kb-number" data-text="3" bind:tap="tapNum">3
class="li kb-number nbor" data-text="4" bind:tap="tapNum">4
class="li kb-number" data-text="5" bind:tap="tapNum">5
class="li kb-number" data-text="6" bind:tap="tapNum">6
class="li kb-number nbor" data-text="7" bind:tap="tapNum">7
class="li kb-number" data-text="8" bind:tap="tapNum">8
class="li kb-number" data-text="9" bind:tap="tapNum">9
class="li kb-float nbor {{type=='tel' || type=='pwd' ? 'disabled' : ''}}" data-text="." bind:tap="tapFloat">.
class="li kb-zero" data-text="0" bind:tap="tapZero">0
class="li kb-del" bind:tap="tapDel">×
支付宝键盘布局view模板:
class="ul">
class="li kb-limit nbor {{err[0]}}">{{err[1]}}
class="li kb-pwd nbor" wx:if="{{type&&type=='pwd'}}"> class="keyboard__panel-pwd"> class="kb-pwdlbl" wx:for="{{len}}" wx:key="index"> type="password" maxlength="1" value="{{kbVal[index]}}" disabled />
class="li kb-result nbor" style="display:{{debug ? 'block' : 'none'}};">{{kbVal}}
class="kb-flexbox flexbox">
class="kb-one flex1">
class="li kb-number nbor" data-text="1" bind:tap="tapNum">1
class="li kb-number" data-text="2" bind:tap="tapNum">2
class="li kb-number" data-text="3" bind:tap="tapNum">3
class="li kb-number nbor" data-text="4" bind:tap="tapNum">4
class="li kb-number" data-text="5" bind:tap="tapNum">5
class="li kb-number" data-text="6" bind:tap="tapNum">6
class="li kb-number nbor" data-text="7" bind:tap="tapNum">7
class="li kb-number" data-text="8" bind:tap="tapNum">8
class="li kb-number" data-text="9" bind:tap="tapNum">9
class="li kb-float nbor {{type=='tel' || type=='pwd' ? 'disabled' : ''}}" data-text="." bind:tap="tapFloat">.
class="li kb-zero" data-text="0" bind:tap="tapZero">0
class="li kb-xclose" bind:touchstart="xcloseTaped"> src="/utils/component/wcKeyboard/img/icon__kb-xclose2.png" mode="aspectFit">
class="kb-two">
class="li kb-del" bind:tap="tapDel"> src="/utils/component/wcKeyboard/img/icon__kb-del.png" mode="aspectFit">
class="li kb-sure" bind:tap="tapSure">确定
android 支付数字键盘,微信小程序自定义数字键盘|仿支付宝、微信支付数字软键盘...相关推荐
- 微信小程序自定义授权弹框
微信小程序自定义授权弹框 最近微信获取用户信息的接口有调整,就是这货:wx.getUserInfo(OBJECT),文档描述如下: 此接口有调整,使用该接口将不再出现授权弹窗,请使用 <butt ...
- uniapp微信小程序自定义相机 ,给相机添加辅助框,解决拒绝相机默认授权后无法再次拉起相机授权问题
微信小程序自定义相机 效果 文章目录 微信小程序自定义相机 效果 需求 一.小程序自定义相机 1.使用uniapp的camera组件 二.使用cover-view,cover-image加辅助边框 三 ...
- 微信小程序-自定义导航栏及返回上一级页面的实现
一.参考文章 1.微信小程序自定义navigationBar 2.微信小程序返回上一级页面的实现代码 3.小程序开发--常用布局 二.需求 在导航栏中需要显示信息的"未读数量",所 ...
- 微信小程序自定义输入仿咸鱼发布
微信小程序自定义输入仿咸鱼发布 效果图 效果图2 主要代码 .js // pages/user/release/release.js import Toast from 'vant-weapp/toa ...
- 微信小程序自定义组件子传父详解(多图)
微信小程序自定义组件子传父详解 前言: 刚开始为了测试父传子,所以把页面的数组放在了父组件中 1. 然而子组件中绑定的自定义点击事件依然放在子组件的js文件中 2. 所以就会出现我们点击页面的文字能改 ...
- 微信小程序自定义类似微信联系人组件
微信小程序自定义联系人弹窗 在小程序项目中需要有一个选择人员项,想着看着好看一些,所以做成类似微信联系人的界面,由于本人是后端人员,效果不是特别好看,ui使用的是weui 效果图如下: 使用的是小程序 ...
- 一步步教你实现微信小程序自定义组件
一步步教你实现微信小程序自定义组件 更新时间:2022年03月21日 11:12:34 作者:naluduo233 之前做小程序开发的时候,对于开发来说比较头疼的莫过于自定义组件了,下面这篇文章主 ...
- 微信小程序自定义组件之Picker组件
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 需求: 通过JS条件判断,满足条件就弹出Picker给用户选择一个数组里面的数据. 有些朋友可能会有疑问: 1 ...
- 微信小程序 自定义导航栏,只保留右上角胶囊按钮
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. navigationStyle 导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航 ...
- 微信小程序自定义组件方案
前言:小程序已于11月初开放了小程序组件功能,但事件方面还不是很完善,有的组件暂时可能还是要用其他方式来实现,这里简单记录下开发小程序自定义组件的要点. 在小程序官方开发组件开发功能之前,自定义组件的 ...
最新文章
- 数据结构源码笔记(C语言):冒泡排序
- shell去掉字符两端字符_Shell脚本8种字符串截取方法总结
- Linux之Apache与Nginx的对比比较:并发性能 消耗机器资源 处理静态资源 模块 稳定性
- PopupWindow的一些使用总结
- python字符串的表示_Python字符串方法总结
- python缓冲区_如何在Python中使用Google的协议缓冲区
- 【数据库题型大总结】简答题总结
- 6-2 删除单链表偶数节点 (10 分)
- python post 远程主机强迫关闭了一个现有的连接_Python最强动态可视化库!
- Android学习笔记---16_采用SharedPreferences保存用户偏好设置参数
- c#chart背景透明_C#+Layui开发后台管理系统
- 剑指offer面试题26-复杂链表的复制
- Linux入门: grep与egrep 知识总结
- 【优化调度】基于matlab粒子群算法求解经济调度优化问题【含Matlab源码 1489期】
- 简单聊聊利用DNS服务器提供单一入口
- informatica joiner组件学习
- SQL 事务(Tran | Transation)与 Try...Catch 的使用
- 计算机网络实验指导gns3,计算机网络实践教程——基于GNS3网络模拟器(CISCO技术)...
- 如何使用计算机word,电脑系统教程:电脑Word分栏怎么用
- thinkphp构架
热门文章
- Echarts横向柱状图:叠加、堆叠(stack)以及点击事件
- LISP道路中线_如何画两条样条线间中心线之三:CAD插件/Lisp编程法
- 在win8.1上用3proxy搭建socks4/4.5/5代理
- 可前进可后退,IDEA 中这个功能神了
- 基于Java毕业设计在线图书超市源码+系统+mysql+lw文档+部署软件
- [视频]新郎奔赴抗震一线 新娘独自举办婚礼
- tp6发送邮件(qq邮箱)
- cmake错误集锦:add_subdirectory()
- 微软决定于2022年停止对 IE 浏览器的支持
- 情商高的人什么表现?