uni-app HBuilder X 4.14 input 组件 type="digit" 时输入数字后无法输入小数点

uni-app HBuilder X 4.14 input 组件 type=“digit” 时输入数字后无法输入小数点

测试过的手机:

H5 iPhone

示例代码:

<template>  
    <view class="content">  

        <view class="text-area">  
            <!--无法输入小数点-->  
            <input placeholder="digit" type="digit"/>  

        </view>  
    </view>  
</template>  

<script>  

</script>  

<style>  

</style>  

操作步骤:

<template>
<view class="content"> 
    <view class="text-area">  
        <!--无法输入小数点-->  
        <input placeholder="digit" type="digit"/>  

    </view>  
</view> 
</template> 

<script> 
</script> 

<style> 
</style> 

预期结果:

能输入小数点

实际结果:

不能输入小数点,而且输入小数点的时候,输入框焦点自动移动到了数字最前面

bug描述:

HBilder X 4.14 input 组件 type=“digit” 的时候,输入数字后无法输入小数点 。而且输入小数点的时候,自动焦点跑到数字的最前面了。
在mac和Windows不同电脑主机都能复现。在H5和App也会复现
在HBuildX4.14的正式版和开发版都存在这个问题,影响范围比较大,请尽快修复

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOs Catalina
HBuilderX类型 正式
HBuilderX版本号 4.14
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app HBuilder X 4.14 input 组件 type="digit" 时输入数字后无法输入小数点的实战教程也可以访问 https://www.itying.com/category-93-b0.html

52 回复

HBuilderX 4.17 alpha 已修复。

更多关于uni-app HBuilder X 4.14 input 组件 type="digit" 时输入数字后无法输入小数点的实战教程也可以访问 https://www.itying.com/category-93-b0.html


然而下载后,并没有

打包h5, 在苹果 x手机无法删除小数点

临时解决方案
web 替换 uni-h5.es.js 到 hx 根目录\plugins\uniapp-cli-vite\node_modules[@dcloudio](/user/dcloudio)\uni-h5\dist 重新运行
app 替换 uni-h5.es.js 到 hx 根目录\plugins\uniapp-cli-vite\node_modules[@dcloudio](/user/dcloudio)\uni-app-plus\dist 重新运行

替换了 连数字都输入不了了

打包h5, 在苹果 x手机无法删除小数点

回复 6***@qq.com: 使用 4.17

真不敢相信,都2024年了,还是这么烂,这种最基础的组件都存在bug,做一个项目到处踩坑

笑死我了,

没人回复吗

看一下HBuilder版本是多少,如果是最新版回退版本,目前4.08是可以的,版本更新后出现的bug,等修复更新吧

回复 1***@qq.com: HBuilder 4.12 和4.14都会

没人吗 我也遇到这问题了 H5 安卓和苹果都不行,能不能彻底解决一下啊?

没有人吗

正在排查中

看我回复的临时解决方案

现在最新版本不是4.15吗,这个问题还存在呀

使用 4.17 alpha

回复 DCloud_UNI_LXH: 使用不同的hbuild那是不是不能打wgt包来静默更新?? 大概什么时候更新到正式

回复 亚瑟: 可以 wgt 更新,你可以在本地测试试试看

回复 DCloud_UNI_LXH: 问一下,正式版hbuild大概什么时候更新

回复 hxyfj: 目前还没有接到要发正式版的通知

回复 DCloud_UNI_LXH: 你好,这个大概什么时候能更新上去呢~

怎么还不发布最新版啊。 真难受

这个问题太严重了,被迫直接先用些临时方案代替。太让人难受了。尽快彻底解决掉吧。

关于input的type为digit和number的情况,实际表现与文档有差异。请尽快修复并紧急发布。digit和number不能使用,体验就太差了。。。。。
我这边是HBuilder X 4.15版本,发行为H5:
number类型: 开发运行到chrome浏览器:没问题; 发行后,安卓浏览器:弹出的不是纯数字键盘,还可以输入小数点。刚输入小数点后,光标会跑到最左侧,将光标移到数字中间后可输入小数点,并且删除行为很怪异,删除小数点后面的数,实际把小数点及前面的数都给删了。
digit类型: 开发运行到chrome浏览器:输入小数点光标会跑到最左侧,把光标移到数字中间后才可以输入小数点,并且删除行为很怪异,删除小数点后面的数,实际把小数点及前面的数都给删了。
发行后,安卓浏览器:输入小数点光标会跑到最左侧,把光标移到数字中间后才可以输入小数点,并且删除行为很怪异,删除小数点后面的数,实际把小数点及前面的数都给删了。 发行后,苹果浏览器:输入小数点光标会跑到最左侧,把光标移到数字中间后才可以输入小数点,并且删除行为很怪异,删除小数点后面的数,实际把小数点及前面的数都给删了。

输入框这种最基本的东西,怎么让问题存在这么久不彻底解决掉???

使用 4.17 alpha

4.15同样遇到了,还好只是测试版。

用最新的 alpha

回复 DCloud_UNI_LXH: 我都用alpha4.23了,问题还在啊

回复 2***@qq.com: 详细描述你的问题

回复 2***@qq.com: 是不是cli创建的项目,而cli没升级?

请问解决了 现在还是这个问题

详细描述你的问题

是不是cli创建的项目,而cli没升级?

回复 DCloud_heavensoft: 是的 升级了 就没得这个问题了

是真的烂,一模一样的问题,4.23版本了依然存在

是不是cli创建的项目,而cli没升级?

详细描述一下你的问题,使用的 hx 还是 cli,版本是多少?vue 的版本是多少?ios 的版本是多少?H5 上有没有问题?

回复 DCloud_UNI_LXH: 您好我也遇到这个问题 升级了cli还是不好使

我是使用的HBuilder运行的cli创建的项目 vue3.0 cli 5.0.8 hbuilder4.36 在hbuilder中创建的input正常。但是在我项目里创建的不正常

回复 1***@qq.com: 提供你的项目,运行到哪个平台?

运行到h5不行

升级前版本:"@dcloudio/uni-app": “3.0.0-4000820240401001” 升级后版本:"@dcloudio/uni-app": “3.0.0-4020420240722002” 升级到最新后,发现bug,升级前无此问题 如果input设置 type=“digit” 绑定值如果是null,报错: main.ts?t=1722478657119:20 TypeError: Cannot read properties of null (reading ‘toLocaleString’) at useCache (uni-h5.es.js:9799:60) at setup (uni-h5.es.js:9847:17) at callWithErrorHandling (vue.runtime.esm.js:1381:19) at setupStatefulComponent (vue.runtime.esm.js:8930:25) at setupComponent (vue.runtime.esm.js:8891:36) at mountComponent (vue.runtime.esm.js:7218:7) at processComponent (vue.runtime.esm.js:7184:9) at patch (vue.runtime.esm.js:6650:11) at mountChildren (vue.runtime.esm.js:6898:7) at processFragment (vue.runtime.esm.js:7114:7)

谁家input的值类型为null? 有没有考虑过自己的问题,uniapp官方很难的好不好,工资涨没涨,有没有好好工作【dog】

回复 3***@qq.com: 看起来你挺【dog】的,感觉一只【dog】扑了过来,我都不知道怎么招架了。嘬嘬嘬,听话,别叫。

看到官方已经处理了,等待最新版本发布。下个版本上线。

uni-app 中使用 HBuilder X 4.14 时,如果你在 input 组件中设置了 type="digit",输入数字后无法输入小数点,这可能是由于 type="digit" 的限制导致的。

type="digit" 通常用于限制用户只能输入数字,但在某些平台或版本中,它可能会限制输入其他字符,包括小数点(.)。为了允许用户输入小数,你可以考虑以下几种解决方案:

解决方案 1: 使用 type="number"

type="digit" 改为 type="number",这样可以允许用户输入数字和小数点。

<input type="number" placeholder="请输入数字" />

解决方案 2: 使用 type="text" 并自定义验证

如果你需要更复杂的输入验证,可以使用 type="text",然后通过 JavaScript 或 uni-app 的事件处理函数来验证输入内容。

<input type="text" placeholder="请输入数字" @input="handleInput" />
export default {
  methods: {
    handleInput(event) {
      const value = event.detail.value;
      // 自定义验证逻辑,确保输入的是数字或小数点
      if (!/^\d*\.?\d*$/.test(value)) {
        // 如果不符合要求,可以清空输入或提示用户
        event.detail.value = value.replace(/[^\d.]/g, '');
      }
    }
  }
}

解决方案 3: 使用 inputmode 属性

虽然 inputmode 属性在现代浏览器中支持较好,但在某些环境中可能不支持。你可以尝试使用 inputmode="decimal" 来提示设备键盘显示数字和小数点。

<input type="text" inputmode="decimal" placeholder="请输入数字" />

解决方案 4: 使用 uni-appinput 组件

如果你使用的是 uni-app 的自定义组件,可以尝试使用 uni-input 组件,并设置 type="number"type="digit",并确保其行为符合预期。

<uni-input type="number" placeholder="请输入数字" />
回到顶部