@微信公众号:Linux技术宅 #开源推荐
一、项目简介
是一个专为移动端浏览器设计的虚拟数字键盘库,支持 原生 JavaScript、React、Vue、Angular 等主流框架。其核心功能包括:
numeric-keyboard
虚拟输入框:替代原生输入框,避免系统键盘弹出,支持光标操作。高度可定制:支持自定义布局、主题、按钮功能(如清除、确认)。多平台兼容:适配 Web 和移动端(iOS/Android),响应式设计。安全输入:防止键盘记录器窃取密码等敏感信息。
适用场景:
支付密码输入金额/验证码填写电话号码/身份证号输入任何需要数字输入的表单字段
二、部署与安装
1. 通过 npm/yarn 安装(推荐)
npm install numeric-keyboard
# 或
yarn add numeric-keyboard
2. 手动引入(CDN 或本地文件)
原生 JS 版本:
<link rel="stylesheet" href="path/to/numeric-keyboard.css">
<script src="path/to/numeric-keyboard.js"></script>
React/Vue/Angular 版本:需从
目录引入对应组件(如
dist
)。
numeric_keyboard.vue.js
3. Webpack 配置(React/Vue 项目)
确保正确解析组件路径:
// webpack.config.js
resolve: {
alias: {
'numeric-keyboard$': 'numeric-keyboard/dist/numeric_keyboard.vue.js' // Vue 示例
}
}
三、使用示例
1. 原生 JavaScript
<input type="text" id="inputField" placeholder="点击输入数字">
<script>
const input = document.getElementById('inputField');
const keyboard = new NumericInput({
type: 'number',
placeholder: '请输入金额',
onInput: (value) => console.log('当前值:', value),
enterText: '确认' // 自定义确认键文本
}).mount(input);
</script>
2. React
import { NumericInput } from 'numeric-keyboard';
function App() {
const handleInput = (value) => {
console.log('输入值:', value);
};
return (
<div>
<NumericInput
type="tel" // 电话键盘布局
placeholder="输入手机号"
onInput={handleInput}
format={/^d*$/} // 限制仅数字输入
/>
</div>
);
}
3. Vue
<template>
<div>
<NumericInput
v-model="amount"
placeholder="输入金额"
:maxlength="6"
@enterpress="handleConfirm"
/>
</div>
</template>
<script>
import { NumericInput } from 'numeric-keyboard';
export default {
components: { NumericInput },
data() {
return { amount: '' };
},
methods: {
handleConfirm() {
alert(`确认输入: ${this.amount}`);
}
}
};
</script>
4. Angular
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<numeric-input
type="number"
placeholder="输入验证码"
[(ngModel)]="code"
(enterpress)="onConfirm()"
></numeric-input>
`
})
export class AppComponent {
code: string = '';
onConfirm() {
console.log('验证码:', this.code);
}
}
四、核心配置选项
选项 | 类型 | 默认值 | 说明 |
---|---|---|---|
|
String |
|
输入类型: (数字)或 (电话) |
|
Array/String |
|
自定义键盘布局(如 ) |
|
RegExp/Function | – | 限制输入格式(如 限制 6 位数字) |
|
String |
|
确认键文本 |
|
Boolean |
|
自动聚焦输入框 |
五、事件监听
:输入值变化时触发。
input
:按下确认键时触发。
enterpress
/
focus
:输入框聚焦/失焦时触发。
blur
六、开源地址与资源
GitHub 仓库:
https://github.com/viclm/numeric-keyboard文档与示例:
仓库内
包含详细 API 说明。
README.md
目录提供完整代码示例。 HelloGitHub 收录:
examples/
https://hellogithub.com/repository/viclm/numeric-keyboard
七、优势与对比
特性 |
|
其他库(如 ) |
---|---|---|
移动端优化 | ✅ 专为触屏设计 | ❌ 多为桌面端优化 |
框架支持 | ✅ React/Vue/Angular/原生 JS | ⚠️ 部分仅支持 React |
自定义布局 | ✅ 支持复杂布局 | ✅ 需额外配置 |
体积 | 📦 轻量(核心代码 <50KB) | 📦 较大(依赖较多) |
八、常见问题解决
键盘不显示:
检查 DOM 元素是否已加载(使用
或
window.onload
)。确认引入的 CSS/JS 文件路径正确。
DOMContentLoaded
输入无效:
检查
配置是否阻止了输入(如正则表达式错误)。确保
format
与输入内容匹配(如
type
用于电话号码)。
'tel'
样式冲突:
使用
覆盖默认样式,或通过
!important
自定义类名。
className
九、总结
是一个 轻量、灵活、移动端优先 的数字键盘解决方案,支持多框架集成和高度定制。无论是支付页面、表单验证还是计算器应用,它都能显著提升用户体验。
numeric-keyboard