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

简介:

微信小程序自定义键盘插件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);

}




	{{err[1]}}
	
	{{kbVal}}

	
	  
		1
		2
		3
		4
		5
		6
		7
		8
		9
		.
		0
		
	  
	  
		
		确定
	  
	




目录
相关文章
|
7月前
|
JSON 小程序 数据格式
【微信小程序】-- 自定义组件总结 (四十)
【微信小程序】-- 自定义组件总结 (四十)
|
7月前
|
小程序 JavaScript
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
|
7月前
|
小程序 JavaScript
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
【微信小程序】之自定义九宫格展示row-grid(每行显示三个)
|
7月前
|
小程序 JavaScript
【微信小程序】之自定义三宫格一行展示row-grid(简单数据看板)
【微信小程序】之自定义三宫格一行展示row-grid(简单数据看板)
|
21天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
21天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
3天前
|
小程序 前端开发 数据挖掘
圈子论坛社区交友系统开源版小程序源码,自定义小程序管理社区圈子软件开发,打造受欢迎社交圈
通过获取开源版小程序源码、进行自定义小程序管理社区圈子软件开发以及注重用户体验和功能模块的设计,可以打造一个受欢迎的社交圈。同时,需要不断优化和完善系统,以满足用户不断变化的需求和期望。
18 0
|
5月前
|
小程序 开发者
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
【微信小程序-原生开发】实用教程05-首页(含自定义调试模式、插入图片、图文排版、底部留白、添加本地图片)
70 0
|
2月前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
666 1
|
2月前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
83 0
微信小程序:自定义关注公众号组件样式

热门文章

最新文章