gpt4 book ai didi

javascript - 带有 accounting.js 格式的输入框不允许我输入小数

转载 作者:行者123 更新时间:2023-11-27 23:34:30 26 4
gpt4 key购买 nike

在我的网站上 satoshindex.com当我尝试在顶部输入框中键入带小数点的数字时,它会自动删除小数点。它还不允许我使用 Ctrl-A 突出显示输入或使用箭头键移动到数字中的不同数字。

我认为这与accounting.js有关.

这是我网站上的相关代码:

  var SAT = 0.00000001;
var BIT = 0.000001;
var MBIT = 0.001;
var BTC = 1;
var currentUnit = BTC;

我知道它与 btcConvertusdConvert 函数中的这些行有关,因为当我删除它们时,问题消失了,但没有使用逗号分隔数。

var decimals = decimalPlaces(input.value);
input.value = accounting.formatNumber(input.value, decimals)

我认为问题是每次您在输入框中键入内容时都会调用 btcConvert 并且 formatNumber 正在删除小数位,但是在 btcConvert 中没有 formatNumber 我无法让它在数字超过 999 时添加逗号, 与美元兑换相同。

最佳答案

如果您非常快速地键入 .5 或者将其复制粘贴到输入字段中,您实际上可以输入一个像 1234.5 这样的十进制数。在正常的打字速度下,1234. 总是在您添加 5 之前变成 1234。如您所料,accounting.js 正在将 1234. 简化为 1234,因为它认为这是规范格式。

因此,您希望用户可以键入 1234.0 并在输入字段中将其自动格式化为 1,234.0。我看到了三种可能的方法:

  • 修改accounting.js代码。编辑 accounting.formatNumber,使其在 input.value 的最后一个字符时不丢弃小数点。

  • 不要使用 accounting.js 来格式化输入字段。将对 accounting.formatNumber 的调用替换为对您自己编写的格式化函数的调用。

  • 一个快速而肮脏的解决方案:不要修改 accounting.js 并保持对 accounting.formatNumber 的调用,但如果 input.value 有小数点在最后,你会得到一个没有小数点的字符串,把它贴回去。

将快速而肮脏的方法应用于 btcConvert 的一种方法是替换此行:

input.value = accounting.formatNumber(input.value, decimals)

有了这个:

var formatted = accounting.formatNumber(input.value, decimals);
if (input.value.indexOf('.') == input.value.length - 1 &&
input.value.length != 0 &&
formatted.charAt(formatted.length - 1) != '.') {
formatted += '.';
}
input.value = formatted;

检查 input.value.length != 0 是必要的,因为如果 input.value 是空字符串,indexOf 将始终返回 -1,对于空 input.value 等于 input.value.length - 1

关于javascript - 带有 accounting.js 格式的输入框不允许我输入小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34446607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com