Javascript 使用JS/jQuery从表单字段获取值的总和
我有一个动态的表单,比如:Javascript 使用JS/jQuery从表单字段获取值的总和,javascript,jquery,html,Javascript,Jquery,Html,我有一个动态的表单,比如: <form id="formaa"> <div class="row"> <input type="text" name="item" class="item"></input> <input type="text" name="quant" class="quant"></input> <input type="text" name="price" class="price"
<form id="formaa">
<div class="row">
<input type="text" name="item" class="item"></input>
<input type="text" name="quant" class="quant"></input>
<input type="text" name="price" class="price" onkeyup="update();"></input>
<input type="text" name="sum" id="suma" size="10" disabled="disabled"/>
</div>
<div class="row">
<input type="text" name="item" class="item"></input>
<input type="text" name="quant" class="quant"></input>
<input type="text" name="price" class="price" onkeyup="update();"></input>
<input type="text" name="sum" id="suma" size="10" disabled="disabled"/>
</div>
<!-- ... many more rows -->
<input type="text" disabled id="total" name="tot"></input>
</form>
我想做的是将商品数量和价格相乘,分别在总和字段中得到每个商品的总和(不是所有商品的总和)
我实现的是这个函数,但它似乎不单独地计算所有项的总和,这与第一个默认字段行一起工作,当我添加一组新字段并用这两个字段的信息填充它们时,字段(以及后来添加的其他字段)和值变为NaN。如果我删除所有添加的字段集并保留第一个表单fows集,电话又接通了。。这里有什么问题
<script type="text/javascript">
function update() {
var total = 0;
$("#formaa div.row").each(function(i,o){
total += $(o).find(".quant").val() *
$(o).find(".price").val();
if(!isNaN(total) && total.length!=0) {
sum += parseFloat(total);
}
});
$("#formaa div.row #suma").val(total);
}
</script>
函数更新(){
var合计=0;
$(“格式分区行”)。每个(功能(i,o){
总计+=$(o).find(“.quant”).val()*
$(o).find(“.price”).val();
如果(!isNaN(总计)&&total.length!=0){
总和+=浮点数(总计);
}
});
美元(合计);
}
代码中的一些问题:
- 切勿将同一id赋予多个元素。这就是我在名称上定义选择器的原因
- 你没有重置总数,所以它是所有的总和
- 我没有解决这个问题,但是您在浮点解析之前的操作很奇怪(这可能取决于我看不到的内容)
- 切勿将同一id赋予多个元素。这就是我在名称上定义选择器的原因
- 你没有重置总数,所以它是所有的总和
- 我没有解决这个问题,但是您在浮点解析之前的操作很奇怪(这可能取决于我看不到的内容)
$(“#suma”)
就足够了。@beneverad$(“#suma”)
不起作用,因为每行都有一个标识为“suma”的元素(这是错误的)。我建议.find('[name=“sum”]')
@dystroy完全正确,我使用了[name=sum]
的相同路线,但总的来说,并没有过度限定ID选择器。这是完全正确的。甚至不利于性能。考虑使用FieldStand标签代替一个边注释,这个<代码> $(“yf.FaMAa DeV.Lo.SuMa”)是毫无意义的,ID只能存在一次,所以不需要限定它。这个$(“#suma”)
就足够了。@beneverad$(“#suma”)
不起作用,因为每行都有一个标识为“suma”的元素(这是错误的)。我建议.find('[name=“sum”]')
@dystroy完全正确,我使用了[name=sum]
的相同路线,但总的来说,并没有过度限定ID选择器。这是完全正确的。这甚至对表演有害。
function update() {
$("#formaa div.row").each(function(i,o){
var total = $(o).find(".quant").val() * $(o).find(".price").val();
if(!isNaN(total) && total.length!=0) {
sum += parseFloat(total);
}
$(o).find('[name="sum"]').val(total);
});
}