问题出在 HTML 元素类型数据格式的不匹配上。

原因:
1. 
一个带千分位分隔符(逗号)的字符串。例如,当15061.4 时,要取6位小数 "15,061.400000"
2. <input> 元素:使用了 type="number"
3. HTML 的 <input type="number"> 元素有严格的规范。它只接受符合 W3C 规范的“有效浮点数字符串”作为其 value带逗号(,)的字符串(如 "15,061.400000")不被认为是有效的浮点数,因此浏览器无法解析它,并抛出了警告  The specified value "15,061.400000" cannot be parsed, or is out of range.

如何解决

最简单且最正确的解决办法是:将 input 的类型从 number 改为 text

type="text" 的输入框可以接受任何字符串作为其 value,包括你用逗号格式化后的价格字符串。由于它已经是 disabled 状态,用户无法向其中输入非数字内容,所以你也不用担心数据污染的问题。

<input
    type="text" // 将number 改为 text
    class="w-full h-[50px] rounded-[8px] bg-[#18191D] text-[#FFFFFF] text-[14px] pl-[10px]"
    :placeholder="$t('t.__77__')"
    disabled
    :value="ratio"
 />

这样修改后,浏览器将不再尝试把 "15,061.400000" 解析为数字,而是会直接将其作为文本显示在输入框中,警告就会消失。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐