我一直试图找到一种方法来完成这项工作,但结果只是与“NaN”一样接近。
我有下表:
<table border="1" class="autoTable">
<tr><td><input name="description[]" id="description" value="<?php echo $description; ?>" size="55" onKeyPress="return disableEnterKey(event)" />
</td><td align="center"><input type="checkbox" name="stocked[]" id="stocked" value="<?php echo $stocked; ?>" size="5" onKeyPress="return disableEnterKey(event)" />
</td><td><input name="quantity[]" id="quantity" value="<?php echo $quantity; ?>" size="5" onKeyPress="return disableEnterKey(event)" />
</td><td><input name="partPrice[]" id="partPrice" value="<?php echo $partPrice; ?>" size="10" onKeyPress="return disableEnterKey(event)" />
</td><td><input name="hours[]" id="hours" value="<?php echo $hours; ?>" size="10" onKeyPress="return disableEnterKey(event)" />
</td><td><select name="rate[]" id="rate" onKeyPress="return disableEnterKey(event)">
<?php
//Connect to mysql db and retrieve the rate options
?>
</select>
</td><td><!--<span class="amount"></span>--><input name="total[]" id="total" size="10" class="amount" onKeyPress="return disableEnterKey(event)" />
</td><td align="center"><input type="checkbox" name="approved[]" id="approved" value="<?php echo $approved; ?>" size="10" onKeyPress="return disableEnterKey(event)" />
</td><td align="center"><img src="img/plus.png" width="25" height="25" id="addButton" title="Add New Row" class="addRow" />
</td><td align="center"><img src="img/x.png" width="25" height="25" id="removeButton" title="Remove Row" class="delRow" />
</td></tr>
</table>
我想要做的是让总字段显示数量x partPrice加上小时x率(从数据库中提取并在选择中列出)。我更喜欢动态地这样做,以便它可以即时更新。我有添加和删除按钮,因此我们可以根据需要添加任意数量的行。
我还希望在页面底部有一个总计 - 但只有在点击“已批准”时才添加每行。
我一直试图做的,至少暂时是这个jquery:
$('#hours').blur(function() {
$('tr').each(function(){
var total = 0;
total = parseFloat($(this).find('input[name=quantity]').val());
$(this).find('.amount').val(parseFloat(total));
});
});
这使NaN成为现实,我无法弄清楚我做错了什么。我甚至没有进入批准复选框或最终总数。
此外,如果我在数字,价格和小时字段中打出数字之前添加动态行,则NaN将显示在每个总计中。这可能是因为我没有指定数组,它只是使用class =“amount”的所有字段(这是所有的总数)。
我可以做的是使用我的提交按钮,它将为任何和所有字段提取值,因此数据库输入不是问题 - 但动态计算总数似乎是。
我将不胜感激任何见解和帮助。
由于
答案 0 :(得分:1)
尝试:
var total = 0; $('tr').each(function(){ total += parseFloat($(this).find('input[name=quantity[]]').val()); $(this).find('.amount').val(parseFloat(total)); });
希望有所帮助
答案 1 :(得分:0)
更改此行...
total = parseFloat($(this).find('input[name=quantity]').val());
...到...
total = parseFloat($(this).find('input[name=quantity]').val()) || 0;
否则空字符串上的parseFloat()
将产生NaN
。 NaN
是有毒的,如果它在数学中的任何位置,它将始终产生NaN
。
您还需要在内部循环之外声明total
,并且仅在结尾处(循环外部)设置值。