l***@163.com
l***@163.com
  • 发布:2026-04-01 10:54
  • 更新:2026-04-02 15:10
  • 阅读:73

【报Bug】ios input type digit 小数点不能输入

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 22631.4890

HBuilderX类型: 正式

HBuilderX版本号: 4.85

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iPhone13

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<input type="digit" v-model="bu.quantity" placeholder="最低" @input="quantityInput"
/>
function quantityInput(e) {
const value = formatValue(e.detail.value)
nextTick(() => {
bu.quantity = value
})
}
export function formatValue(value) {
let val = String(value)
val = val.replace(/(^\s)|(\s$)/g, '')
if (!val) {
return ''
}
val = val.replace(/^0{2,}./g, '0')
val = val.replace(/^0([1,2,3,4,5,6,7,8,9])/g, '$1')
val = val.replace(/[^\d.]/g, '')
val = val.replace(/^./g, '')
val = val.replace('.', '$#$').replace(/./g, '').replace('$#$', '.')
val = val.replace(/^(-)
(\d+).(\d{2}).*$/, '$1$2.$3')
return val
}

操作步骤:

输入

预期结果:

可以输入小数点

实际结果:

部分机型不能输入小数点

bug描述:

苹果13 ios16.5.1 input type digit 小数点不能输入

2026-04-01 10:54 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

这个 bug 反馈的信息基本完整,但存在几个需要补充和澄清的关键点,同时这是一个已知的历史问题

关于反馈内容的评审:

复现步骤描述过于简略,仅写了"输入"两个字,建议补充具体操作流程,例如:"点击输入框,尝试输入小数点(.)观察是否能正常输入"。另外代码示例中包含了自定义的 formatValue 函数逻辑,该函数对输入值进行了复杂的正则替换处理,这可能会干扰原生输入行为,建议在复现时先注释掉 @input 事件处理,排除业务代码干扰。

关于问题本身的技术分析:

根据历史更新日志,iOS 16 系统 input 组件 type=digit 无法输入小数点 是一个已知问题,已在 3.6.7.20221018-alpha 版本中修复 (详情)。您使用的 HBuilderX 4.85 版本理论上是包含该修复的。

如果问题仍然存在,可能的原因包括:

  1. 代码逻辑干扰:您代码中的 formatValue 函数在 @input 事件中通过 nextTick 重新赋值,这种处理方式在 Vue3 响应式环境下可能与 iOS 16 的原生键盘行为产生冲突,导致小数点输入被过滤

  2. 特定 iOS 版本兼容性:虽然 3.6.7 版本已修复 iOS 16 的该问题,但 iOS 16.5.1 可能存在特定的键盘行为差异

建议的解决方案:

  1. 升级 HBuilderX:建议升级到最新正式版(当前为 5.04)或 Alpha 版(5.03),确认问题是否仍然存在

  2. 使用 inputmode 替代:如果您使用的是 5.0+ 版本,可以考虑使用 inputmode="decimal" 替代 type="digit",该属性专门用于小数输入键盘 (详情)

  3. 使用插件市场组件:如果原生组件仍有兼容性问题,建议使用插件市场的数字输入组件,如 qisi-number-boxnx-number-input,这些组件通常处理了各平台的兼容性细节

  4. 排除业务代码干扰:建议先移除 formatValue 处理逻辑,测试纯 type="digit" 是否能输入小数点,以确认是否为业务代码导致的问题

补充说明:
根据 input 组件文档,type="digit" 在 App 平台、H5 平台的 Vue 页面在 iOS 平台显示的键盘包含负数(但原生键盘不支持负号输入),这是符合预期的行为 (详情)。如果上述方案仍无法解决,建议提供更详细的复现视频或在专业群进一步排查。

内容为 AI 生成,仅供参考
648445400

648445400

问题还是存在 hbuiderx 5.06版本,ios16 -ios18系统都无法输入小数点

l***@163.com

l***@163.com (作者)

算了 社区也没人解决

要回复问题请先登录注册