使用jQuery在输入框中显示一个小数点后2位的值,同时保持更高的精度[重复]

Posted

技术标签:

【中文标题】使用jQuery在输入框中显示一个小数点后2位的值,同时保持更高的精度[重复]【英文标题】:Using jQuery to display a value to 2 decimal places in an input box while retaining more precision [duplicate] 【发布时间】:2011-03-16 01:40:04 【问题描述】:

可能重复:javascript: formatting number with exactly two decimals

也许我用错了方法,但我有一些 javascript 正在用 12.434234234 之类的数字填充一些文本输入。我希望文本输入仅显示 12.43,但我希望它的值保持为 12.434234234。

这甚至可能吗?如果没有,最好的解决方法是什么?

谢谢! 约翰。

--

虽然这里有一些非常好的答案,但我一直在寻找类似“你为什么不使用这个聪明的单衬里的东西..”之类的东西 - 因此我勾选了最基本的方法,即只使用额外的字段。不过谢谢!标记了所有答案。

【问题讨论】:

用户与这些数字有什么样的互动?为什么保持精度很重要? 我的客户希望能够将交易拆分,例如将 12.53 美元分成几个百分比的部分。例如,12.53 美元的 50% 是两手 6.265 美元。尽管 0.5 美分听起来并不多,但我们不想在某处失去这笔钱。我们确实在某处划定界线,但该处将在数据库中或我不关心的某个地方,只要有相当的精确度。 但是我的客户也不希望应用程序显示那种精度,因为它看起来很丑:p 【参考方案1】:
num = 12.434234234;
result = num.toFixed(2); // returns 12.43

【讨论】:

【参考方案2】:

您可以将细粒度值存储在隐藏字段中,并修剪为用户显示的值。

【讨论】:

你也可以使用一个变量而不是为此创建一个完整的隐藏字段。 文本输入通常用于 html 表单。您会在哪里保留该变量以进行进一步处理? 我明白了,如果您要与服务器进行非 JavaScript 交互,并希望在多个页面上保留全部价值。是的,那这就是你想要的。如果您只想在与单个页面的交互过程中记住该值,那么变量就足够了。【参考方案3】:

您可以将输入的值存储为输入的 data(使用 jQuery),在加载时对其进行格式化,然后在 submit 期间替换该值,如下所示:

http://jsfiddle.net/magicaj/8cdRs/1/

HTML:

<form id="form">
    <input type="text" class="formatted-number-input" value="12.434234234" />
</form>

JS:

$(".formatted-number-input").each(function() 
   var value = $(this).val(); 
   $(this).data("originalValue", value);
   var roundedValue = value.toFixed(2);
   $(this).val(roundedValue);
);

$("#form").submit(function()     
    var formattedInput = $(".formatted-number-input");
    formattedInput.each(function() 
        var originalValue = $(this).data("originalValue");
        $(this).val(originalValue);
    );
);

【讨论】:

老款switcharoo,我喜欢! @John Hunt 哈哈,我不提倡将此作为最佳实践。很多时候,我只是忙于回答字面上的问题,而不是试图理解用例并提供更好的交互设计,我认为这可能需要......【参考方案4】:

有多种方法可以解决这个问题: 1. 创建隐藏字段,在其中存储 12.434234234 并在文本字段中显示格式化值。 2. 使用 jquery.data() 存储原始 12.434234234 并在文本字段中显示格式化值。

【讨论】:

以上是关于使用jQuery在输入框中显示一个小数点后2位的值,同时保持更高的精度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何通过jquery在文本框中检查用户输入的小数分隔符

如何使用小数点后三位的货币掩码?

input限制只能输入整数或保留小数点后2位的浮点数

如何防止Java自动舍入

怎么让产生有小数点数据自动变成进一位的整数,不管小数点后面是多少,都进一位

用户在输入框中输入小数点时逗号消失