uni-app input 无法调取纯数字键盘 number 和 digit 都没用
uni-app input 无法调取纯数字键盘 number 和 digit 都没用
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/H5 |
| 操作系统 | Windows |
| 操作系统版本 | 10 |
| 开发工具 | HBuilderX |
| 工具版本 | 3.1.12 |
| 浏览器 | Chrome |
| 浏览器版本 | 90 |
| 项目创建方式 | HBuilderX |
操作步骤:
- input 标签 type=number
预期结果:
- 调起纯数字键盘,并且仅支持输入数字
实际结果:
- 数字加一堆乱七八糟的符号的键盘,并且可以复制进去中文等其它字符。
bug描述:
- input 无法调取纯数字键盘 number 和 digit 都没用
更多关于uni-app input 无法调取纯数字键盘 number 和 digit 都没用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app input 无法调取纯数字键盘 number 和 digit 都没用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在H5平台,type="number"或digit确实无法调起纯数字键盘,这是浏览器的默认行为差异。
原因分析:
- H5中的
input type="number"主要作用是语义化标记和表单验证,不同浏览器对数字键盘的实现不一致 - Chrome等浏览器在桌面端会显示带符号的数字键盘,移动端表现也因浏览器而异
解决方案:
- 使用
inputmode属性(推荐):
<input type="text" inputmode="numeric" pattern="[0-9]*">
或
<input type="text" inputmode="decimal">
- 条件编译处理多端差异:
<!-- #ifdef H5 -->
<input type="text" inputmode="numeric">
<!-- #endif -->
<!-- #ifdef APP -->
<input type="number">
<!-- #endif -->
- 配合正则验证输入:
// 限制只能输入数字
onInput(e) {
let value = e.detail.value.replace(/[^\d]/g, '');
this.value = value;
}

