2011-10-12 95 views
0

为什么这不显示#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。我完全失去了,但希望有人会看到我没有的东西。先谢谢你。

回答

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

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

编辑,因为我很忙我没有解释我的回答,格雷格·佩蒂特做到了,所以这里的解释

你试图链toFixed()的东西,这不是一个数字。此外,你没有将你的检索值转换为浮点数。 JS可能已经处理了后者,但更好的通过parseFloat为每个样品运行它

+1

您试图链接到固定()以非数字。此外,你没有将你的检索值转换为浮点数。 JS可能已经处理了后者,但更好的是按照样本通过parseFloat运行它。 –

0

val返回String对象,而不是数字。您需要致电parseFloat或投至Number,然后致电toFixed(2)