假设我想要4个文本框,最后一个文本框是总的。第一个框我放20,第二个框20,最后一个框是10.如果我使用函数更新总结()总计总数,它将使总数为50.如果我减去10而没有放置' - 10'在文本框中'?
的javascript: -
<script type="text/javascript"><!--calculation-->
<!--
function updatesum() {
document.form.jumlah.value = (document.form.rm1.value -0) + (document.form.rm2.value -0) + (document.form.rm3.value -0) + (document.form.rm4.value -0) + (document.form.rm5.value -0) + (document.form.rm6.value -0) + (document.form.rm7.value -0) + (document.form.rm8.value -0) + (document.form.rm9.value -0) + (document.form.rm10.value -0) + (document.form.rm11.value -0) + (document.form.rm12.value -0) + (document.form.rm13.value -0) + (document.form.rm14.value -0) + (document.form.rm15.value -0);
}
//-->
</script>
HTML: -
<tr>
<td>13.</td>
<td><input type="text" class="form-control" id="d13" name="d13"></td>
<td><input type="text" class="form-control calc" id="rm13" name="rm13" onChange="updatesum()"></td>
</tr>
<tr>
<td>14.</td>
<td><input type="text" class="form-control" id="d14" name="d14"></td>
<td><input type="text" class="form-control calc" id="rm14" name="rm14" onChange="updatesum()"></td>
</tr>
<tr>
<td>15.</td>
<td><input type="text" class="form-control" id="d15" name="d15"></td>
<td><input type="text" class="form-control calc" id="rm15" name="rm15" onChange="updatesum()"></td>
</tr>
<tr>
<td></td>
<td align="right">Total</td>
<td><input type="text" class="form-control calc" id="jumlah" name="jumlah" readonly value=""></td>
</tr>
答案 0 :(得分:1)
短而甜:
将(document.form.rm15.value -0)
更改为(document.form.rm15.value * -1)
说明:
每个(document.form.(name).value -0)
表达式只是将您在输入框中的值转换为数字。每个之间的+
将它们加在一起。将它们转换为数字的另一种选择是将它们相乘。由于您希望减去,并且添加负数与减去相同,我们可以将您的值转换为数字,并一次性反转它,因此* -1
。
注意:您在JavaScript中为我们提供的输入框比您在HTML中提供的输入框要多,所以我假设您在实际应用程序中拥有所有这些输入。
注2:除了写出完整的等式之外,肯定有更简洁的方法,但更新你的方法不在问题的范围内。
答案 1 :(得分:0)
将您的updatesum
方法更改为
function updatesum()
{
var total = 0;
$('.calc:not(#jumlah)').each(function(){
var value = $(this).val();
//console.log("value " + value);
if ( value.indexOf( "minus" ) != -1 )
{
value = -(parseFloat(value.replace( /minus/g, "" )));
console.log("value " + value);
}
if ( String(value).length > 0 && !isNaN(value))
{
total += parseFloat(value);
//console.log(" running total " + total);
}
});
console.log("total " + total);
$('#jumlah').val(total);
}