无法将结果数字格式化为十进制形式

时间:2011-10-12 19:06:31

标签: jquery numbers

为什么这不会将#total显示为小数?  class =“total”中输入的值是一个函数结果,它以2十进制格式存储该值。显示行总计的函数工作正常,但是当我使用下面的代码在qty字段更改时总计行时,mat是正确的并且更改正确发生,但它是int样式而不是货币格式(2位小数)地方)。我也尝试过精确度而没有变化。

$('[name^=qty]').change(function(){
    var sum = 0;
    $('input.total').each(function() {
        sum += $(this).val();
    });

    $('#total').val(sum).toFixed(2);
    });

以下是总计每行的代码

function Tot(x,price,y) {
var total = CurrencyFormatted(x*price);
var v = document.getElementById(y);
v.setAttribute('value',total);}

所有这些函数运行正常,总计正确并按预期更新,但总计字段中的小数位除外。

下面是我每行使用的html,然后是总数

<td>$<input id="t1" disabled="disabled" size="8" value="0.00" class="total" />
...
<input disabled="disabled" id="total" name="total" size="8" value="0.00" />

css中没有任何内容可以改变类或表结构中数字的格式。我完全失去了,但希望有人会看到我不知道的事情。提前谢谢。

3 个答案:

答案 0 :(得分:2)

$('input.total').each(function() {
    sum += parseFloat( $(this).val() );
});

$('#total').val( sum.toFixed(2) );
编辑,因为我很忙,我没有解释我的答案,Greg Pettit做了,所以这里是解释

你试图将toFixed()链接到不是数字的东西。此外,您没有将检索到的值转换为浮点数。 JS可能已经处理了后者,但最好按照样本

通过parseFloat运行它

答案 1 :(得分:0)

您可以使用parseFloat函数执行此操作:

parseFloat(value).toFixed(2);

了解更多示例:

JQuery Type examples

答案 2 :(得分:0)

val返回String个对象,而不是数字。在致电parseFloat之前,您需要致电Number或转发toFixed(2)