我有一個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