javascript 虚拟数字键盘

最近项目业务需要,做个微信支付类似的数字虚拟键盘,自己做了一个。

适应手机任何尺寸,高度封装。

js:



define([], function () {

/*
param: {
onFinish: function (){},
onChange: funciton (){},
maxLength: number
}

*/

var template =[
‘<ul class="keyboard J_Vertual-keyboard">‘,
‘<li class="J_Function-key J_Number">1</li>‘,
‘<li class="J_Function-key J_Number">2</li>‘,
‘<li class="J_Function-key J_Number">3</li>‘,
‘<li class="J_Function-key J_Number">4</li>‘,
‘<li class="J_Function-key J_Number">5</li>‘,
‘<li class="J_Function-key J_Number">6</li>‘,
‘<li class="J_Function-key J_Number">7</li>‘,
‘<li class="J_Function-key J_Number">8</li>‘,
‘<li class="J_Function-key J_Number">9</li>‘,
‘<li class="bgc2">&nbsp;</li>‘,
‘<li class="J_Function-key J_Number">0</li>‘,
‘<li class="J_Delete bgc2 J_Function-key delete"></li>‘,
‘</ul>‘
].join(‘‘);

var VertualKeyBoard = function (param) {
this._onFinish = param.onFinish;
this._onChange = param.onChange;
this._maxLength = param.maxLength || 6;

this._vKeyboard = $(template);
this._vKeyboardBtns = this._vKeyboard.find("li");
this._inputedNum = [];
this._init();
}

VertualKeyBoard.prototype = {
_init: function (){
this._bindEvent();
},
_onFinish: function () {/*abstract function*/ },
_onChange: function () {/*abstract function*/ },
_putNum: function (num) {
num = parseInt(num);
if (this._inputedNum.length < this._maxLength) {
this._inputedNum.push(num);
this._onChange(this._inputedNum);
if (this._inputedNum.length == this._maxLength) {
this._onFinish();
}
}
},
_delNum: function (){
if(this._inputedNum.length > 0){
this._inputedNum.length = this._inputedNum.length - 1;
this._onChange(this._inputedNum);
}
},
_bindEvent: function (){
var that = this;
this._vKeyboard.on(‘click‘, function (e) {
var $this = $(this);
var $t = $(e.target);
if ($t.hasClass("J_Function-key")) {
if ($t.hasClass("J_Number")) {
that._putNum($t.html());
} else if ($t.hasClass("J_Delete")) {
that._delNum();
}
}

})
},
getTemplate: function (){
return this._vKeyboard;
},
getValue: function () {
//for inputed num maybe is begin with zero, so return string.
return this._inputedNum.length > 0 ? this._inputedNum.join("") : null;
},
clean: function () {
this._inputedNum.length = 0;
}
}

return VertualKeyBoard;
});

css: 自己可以改

?





1

2

3

4

.keyboard{ position:absolute; bottom:0; width:100%; background:#fff;line-height:50px;  }

.keyboard li{ text-align: center; width:33.33%; float:left;border:1px solid #cfcfcf;border-bottom:0;border-left:0; box-sizing:border-box; }

.keyboard li:nth-child(3n){border-right:0;}

.keyboard li:active {background:#eee;}

调用: 

?





1

2

3

4

5

var virtualKeyBoard = new VirtualKeyBoard({

                onFinish: function(){},//输入完成

                onChange: function (){},//有改变

                maxLength: number,//允许输入数字长度

            });

预览: 

时间: 2024-11-05 19:00:04

javascript 虚拟数字键盘的相关文章

JS数字键盘

JS数字键盘,JS小键盘 CSS代码: #numberkeyboard { border: 1px solid #b3b3b3; background: #f2f3f7; height: 285px; margin: 0; padding: 2px; position: relative; visibility: visible !important; width: 285px; } #numberkeyboard .numbtn { -moz-border-radius: 4px; /* Ge

原生js写个简单的数字键盘(by vczero)

一.起因 最近支付的同事说,数字键盘有些问题:在移动设备上有时候比较难出现点(.) 和数字在一起的格局:因此,考虑到这种情况,就建议手写个模拟键盘了.花了一晚上的时间,写了个简单的键盘,基本能用.考虑到有的开发者没有使用juqery,就使用原生的js了. Github地址:https://github.com/vczero/keyboard 二.截图如下 三.体验地址(需要点击input才能弹出数字键盘的哦) URL: http://vczero.github.io/num_key/index.

jquery实现导航启用数字键盘监听效果

今天写一个案例:就是导航可以用数字键盘来监听,也就是点击数字键盘相应的导航触发并且出现相应的样式.来看代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{margin:0;padding:0;} ul,li{list-style: none}

VirtualBox中出现UUID have already exists ,并且数字键盘numlock效果相反

原文地址:https://www.cnblogs.com/xqzt/p/5053338.html 原因:由于linux密码登录错误,修改也报错误,所以只能重新安装虚拟机并在其中安装镜像文件,但是安装镜像文件中报错,看报错信息像是文件重复了,试着找报错信息点,定位问题 解决:找到以下类似方案,采用方法二解决了,成功安装了镜像Linux系统文件,但是仍然有密码错误的问题(默认密码是123456,但是数字键盘被我手贱点了NumLock 没成想linux虚拟机和windows对数字键盘锁开关正好相反,在

设置警告框为带有一个密文输入框的样式,并设置输入框键盘为数字键盘;判断密文输入框里的内容,并弹出相应提示

项目需求 废话不说,直接上试题 及答案 代码 #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong) NSMutableArray * dataSource; - (IBAction)buy:(id)sender; @end @implementation TableViewController -

iOS8数字键盘加左下角完成button

iOS8数字键盘加左下角完成button的核心代码如下面: - (void)addDoneButtonToNumPadKeyboard { UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom]; if (systemVersion < 8.0){ doneButton.frame = CGRectMake(0, 163, 106, 53); }else{ doneButton.frame = CGRectMake(

移动开发不同手机弹出数字键盘问题

最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了.于是想要尝试其它的实现方案,最终的结论却令人沮丧.不过也趁机详细了解了下pattern这个属性. type="tel" 和 type="number" 的区别 这里还是先那么先交代一下最初遇到的问题.其实无论是tel还是number都不是完美的: type="tel" 优点是iO

iOS TextField数字键盘的限制位数处理(特别适用于手机登陆)

Hi~大家好,这么长时间不和大家见面了,说来惭愧,最近忙于工作,已经很久没有写博客了, 接下来和大家分享一下在iOS下数字键盘限位的处理---好,废话不多说直接上代码 在用手机号登陆的时候大家有没有遇到这个问题? 就是一边想要输入到一定位数要限制输入,但是删除的时候还要能删除,今天小编遇到了这个问题,解决好半天,最终把它解决了,好了接下来给大家分享一下 相信大家都知道,输入框是用 UITextField的吧,其他的都不说了,要用textField的话实现代理方法,最重要的一点是设置他的键盘模式为

如何使用alt键+数字键盘上的数字键打出特殊符号

如何使用alt键+数字键盘上的数字键打出特殊符号 有时当我需要画示意图说明一个问题,但是苦于没有合适的符号,因此,这篇博文将简单介绍一些特殊的符号方便自己以及大家使用. 实现原理很简单:所有的字符(包括字母.数字.汉字甚至是其他文字)在计算机内部都是以编码的形式存储的,比如其中小于127的称为标准ASCII编码,汉字也是有编码的,编码标准为GBK,在45687-63486之间存储着常用的6763个汉字.41377-43518存储者一些图形符号.43072-43424之间存储着一些非汉字符号.