2016-09-11 20 views
0

チェックボックスをオンにするたびに、データ価格属性にチェックボックスに関連付けられた入力フィールドの値を掛けたいとします。これらの乗算の合計を計算する必要があります。チェックボックスのデータ属性に入力値を掛けて

HTML:

<input class="selectproduct" type="checkbox" name="item0" data-price="5"/>First 
<input type="text" class="qty0" name="qty0"/> 
<br/> 
<input class="selectproduct" type="checkbox" name="item1" data-price="7"/>Second 
<input type="text" class="qty1" name="qty1"/> 
<br/> 
Total Price: $<span class="price">0</span> 

JS:

$('.selectproduct').on("change", function() { 
    var totalPrice = 0; 

    $('.selectproduct:checked').each(function() { 
     totalPrice += parseInt($(this).data('price'), 10); 
    }); 

    $('.price').html(totalPrice); 
}); 

私は現在、チェックボックスに応じて価格を合計することが、私は、関連する入力でそれを乗算する方法を見つけ出すことはできません変更がある場合は常にフィールドに入力します。入力フィールドが変わるたびに、どのように合計を更新するのですか? https://jsfiddle.net/600rzptn/

+0

全く共通の親に包まれたもの '' 要素はありますか? –

答えて

1

あなたは、それは次のように行うことができます

はここでフィドルです。

$('.selectproduct').change(function() { 
 
    var totalPrice = 0; 
 

 
    $('.selectproduct:checked').each(function() { 
 
    totalPrice += $(this).data('price') * $(this).next('input').val(); 
 
    }); 
 

 
    $('.price').html(totalPrice); 
 
}); 
 

 
//to change total price on changing textbox value 
 
$('input[type="text"]').keyup(function() { 
 
    $('.selectproduct:first').change(); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class="selectproduct" type="checkbox" name="item0" data-price="5" />First 
 
<input type="text" name="qty0" /> 
 
<br/> 
 
<input class="selectproduct" type="checkbox" name="item1" data-price="7" />Second 
 
<input type="text" name="qty1" /> 
 
<br/> 
 
Total Price: $<span class="price">0</span>

0

変更あなたの計算行へ:

totalPrice += parseInt($(this).data('price'), 10) * $(this).next().val(); 

jsFiddle example

+0

これは、入力フィールドを変更しても合計を更新しません。私の最初のチェックボックスがチェックされ、入力値が1であると仮定すると、合計は$ 5に変わります。これは正しいです。ただし、入力値を2に変更すると、合計は変更されません。値の変更が入力されるたびに合計を変更するにはどうすればよいですか? – drunkonmilk

+0

セレクタを '$( '。selectproduct、input [type =" text "]')'に変更するだけです。 https://jsfiddle.net/j08691/600rzptn/2/ – j08691

関連する問題