digital-keyboard - 数字与id输入的键盘

这篇博客介绍了如何使用digital-keyboard库创建数字与身份证输入的虚拟键盘。通过npm安装后,导入并配置键盘类型、限制位数等参数,实现不同类型的输入框与键盘的交互。在CSS中定义了键盘的样式动画,使得键盘在弹出和隐藏时有平滑过渡效果。示例代码展示了如何在特定元素被点击时弹出相应类型的键盘。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虚拟键盘的简单运用

点击进入digital-keyboard的git地址

数字与身份证键盘的使用,使用的类型type有以下可选用:decimalintegerphoneidcard
npm的安装指令: npm install digital-keyboard

import '../css/digitalKeyboard.scss';
import DigitalKeyboard from 'digital-keyboard'; // 引用npm安装的digital-keyboard
// import DigitalKeyboard from './lib/Keyboard'; // 此引用的是在项目中放置压缩的js文件

const keyboardStr = `
	<div id="kb__ct"  class="kb__ct" style="display: none">
		<div class="kb__bg"></div>
        <div class="kb__el"></div>
    </div>
`;
document.write(keyboardStr);
const $keyboardLayer = $('#kb__ct');
const $keyboardBg = $('.kb__bg');
// 当前键盘赋值元素选择器
let curValueElSel = '';
// 当前键盘赋值元素
let curValueEl = null;
// 当前键盘类型
let curType = '';
// 当前键盘
let curKeyboard =  null;

$keyboardBg.click(() => $keyboardLayer.hide());

function initKeyboard({ valueEl, type = 'idcard', integerDigits = 4, decimalDigits = 2 }) {
	curValueEl = document.querySelector(valueEl);
	curValueElSel = valueEl;
	curType = type;
	// 固定键盘挂载元素
	const element = document.querySelector('.kb__el');
	element.innerHTML = '';
	curKeyboard = new DigitalKeyboard({
		el: element,
		className: 'kb__main',
		type, // 键盘类型:decimal小数,integer整数,phone手机号,idcard身份证
		language: 'chinese',
		inputValue: (value) => {  // 键盘输入返回值
			curValueEl.innerHTML = value;
		},
		integerDigits,   // 限制整数位数
		decimalDigits,    // 限制小数位数
	});
}

export function openKeyboard({ valueEl, type = 'idcard', className, integerDigits = 4, decimalDigits = 2 }) {
	$keyboardLayer.show();
	// 键盘类型不同,需重新初始化键盘
	if (type !== curType) {
		initKeyboard({ valueEl, type, className, integerDigits, decimalDigits });
 	} else if (curValueElSel !== valueEl) {
		// 仅更改赋值元素
	    curValueElSel = valueEl;
	    curValueEl = document.querySelector(valueEl);
	}
	// 继续上次编辑
	curKeyboard.value = curValueEl.innerHTML;
}

css的文件引用

.kb__ct {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 999;
  display: flex;
  flex-direction: column;
  animation: fadeInUp .3s linear forwards;

  .kb__bg {
    flex: 1;
    box-shadow: inset 0 -0.1rem .1rem rgba(136, 136, 136, 0.3);
  }

  .kb__main {
    font-size: 15px;
  }
}

@-webkit-keyframes fadeInUp {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
    transform: translate3d(0, 100%, 0);
  }

  100% {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}

使用:

// 点击该元素时,弹出input的弹窗内容
that.$('#code_idCard').click(() => openKeyboard({ valueEl: '#code_idCard'}));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值