我有一个Bootstrap模式,其中包含多个表单。所有表单都有一个输入字段和复选框。每次发生更改事件时,我都会尝试运行函数update_amounts_modal
。当我更改输入值时工作,但在检查/取消选中复选框时不起作用。关于输入更改和复选框更改的运行功能
UPDATE我创建了一个FIDDLE 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();
}
我没有得到一个错误,但只是没有发生。有没有更好的方法来完成这一点?
为什么你会调用同一个函数在这两种情况下.. – 2014-08-29 13:29:22
@DavidThomas:?看到更新的答案! – Meules 2014-08-29 14:05:48