【发布时间】:2014-08-29 22:57:18
【问题描述】:
我有一个包含多种表单的 Bootstrap 模式。所有表单都有一个输入字段和复选框。每次发生更改事件时,我都会尝试运行函数update_amounts_modal。这在我更改输入值时起作用,但在我选中/取消选中复选框时不起作用。
更新我已经创建了一个小提琴HERE
功能:
function update_amounts_modal(){
var sum = 0.0;
$('form').each(function() {
var qty = $(this).find('.qty input').val();
var price = $(this).find('.price input').val();
qty= parseInt(qty) || 0;
price= parseFloat(price) || 0;
var amount = (qty*price)
sum+=amount;
});
$('.total-modal').text('€'+sum.toFixed(2));
}
变化函数:
update_amounts_modal();
$('form .qty').change(function(){
update_amounts_modal();
$('.total-modal').change();
});
HTML:
<form method="post" data-target="#modal" data-async="" action="action_url">
<div class="qty cell">
<input type="text" class="qty" value="1" name="quantity">
</div>
<div class="price cell">
<span class="euro">€</span><input type="text" disabled="" class="price" value="0.60">
</div>
<div class="checkbox cell">
<input type="checkbox" checked="" value="12933006" name="product[]" class="idRow">
</div>
</form>
//And more forms exactly like this but with different input values!
<div class="total-modal">€0.00</div>
实际需要发生的是,通过选中/取消选中需要使用函数重新计算值。因此,如果您将 qty 设置为 10 并且取消选中该复选框,则必须从总数中扣除该金额(10 倍,例如 €0.25)。
我认为这样的事情应该可行,但事实并非如此:
$(".idRow").change(function(){
if($(this).attr("checked")){
update_amounts_modal();
}
else{
update_amounts_modal();
}
我没有收到错误,只是没有发生任何事情。有没有更好的方法来实现这一点?
【问题讨论】:
-
为什么在这两种情况下都调用同一个函数?..
-
@DavidThomas:查看更新的答案!
标签: javascript jquery