問題の解決策を見つけるために (さまざまな解決策を組み合わせようとして) Stackoverlfow に 20 時間以上費やしましたが、まだ行き詰まっており、間違いなくあなたの助けが必要です!
基本的に、3 つの「金額」入力フィールドと「合計金額」フィールド (3 つの金額の合計) を持つ単純なフォームがあります。
HTMLコードは次のとおりです。
<table border="1">
<tr>
<td>Amount 1</td>
<td><input class="amount" type="text"/></td>
</tr>
<tr>
<td>Amount 2</td>
<td><input class="amount" type="text"/></td>
</tr>
<tr>
<td>Amount 3</td>
<td><input class="amount" type="text"/></td>
</tr>
<tr>
<td>Total Amount</td>
<td><span class="total">0</span></td>
</tr>
</table>
次に、作業用の JQuery コード:
$(document).ready(function(){
$('input').each(function() {
$(this).keyup(function(){
calculateTotal();
});
});
});
function calculateTotal() {
var sum = 0;
$('input').each(function() {
if(!isNaN(this.value) && this.value.length!=0) {
sum += parseFloat(this.value);
}
});
$(".total").html(sum.toFixed(2));
}
ただし、同じページ内で同じフォームの複数のインスタンスを使用したいのですが、現在のような「一般的な」JQuery関数を1つだけ持たせようとしています。これは、同じページであっても、混合せずに任意のフォームで機能しますフォーム間のフィールド。
基本的には「入力欄が更新されるたびに合計金額を再計算し、CURRENTフォーム・テーブルの合計欄に入れる」という機能
私はさまざまな方法を試しました。特に、テーブルを " で囲み、<div>
" で見つけてからcurrentdiv = $(this).prev("div");"
、 each 関数を使用して "現在の div" をループします。を使用せずに、次のようなことも試しました<div>
。
$(this).closest('tr').next().find('span.total').html(sum.toFixed(2));
or
$(this).closest('span.total').html(sum.toFixed(2));
or even
$(this).closest('span').prevAll('.total:first').html(sum.toFixed(2));
よろしくお願いします。