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等浏览器在桌面端会显示带符号的数字键盘,移动端表现也因浏览器而异

解决方案:

  1. 使用inputmode属性(推荐):
<input type="text" inputmode="numeric" pattern="[0-9]*">

<input type="text" inputmode="decimal">
  1. 条件编译处理多端差异:
<!-- #ifdef H5 -->
<input type="text" inputmode="numeric">
<!-- #endif -->
<!-- #ifdef APP -->
<input type="number">
<!-- #endif -->
  1. 配合正则验证输入:
// 限制只能输入数字
onInput(e) {
    let value = e.detail.value.replace(/[^\d]/g, '');
    this.value = value;
}
回到顶部