ラジオボタンやチェックボックスを選択するとvalueに当てられた値を計算し、各ブロックの小計と全ブロックの総合計を算出するフォームを作成しています。
単体のラジオボタンやチェックボックスの計算はできたのですが、multiple欄のテキストボックスに任意で数値を入力した場合に、inputのvalueの値 × 入力欄の任意の値の計算がどうしてもできません。
よろしくお願いします。
HTML
<form action=""> <div class="category"> [Group-A] <label><input type="checkbox" class="value" value="100">100</label> <label><input type="checkbox" class="value" value="200">200</label> <label><input type="checkbox" class="value" value="300">300</label> <label> <input type="checkbox" class="value aaa" value="100">multiple pages:100× <input value="" type="text" class="pages">pages </label> [Subtotal]<input type="text" class="xxx" value="0"> </div> <div class="category"> [Group-B] <label><input type="radio" class="value" value="100">100</label> <label><input type="radio" class="value" value="200">200</label> <label><input type="radio" class="value" value="300">300</label> <label> <input type="checkbox" class=" aaa" value="200">multiple pages:200× <input value="" type="text" class="pages">pages </label> [Subtotal]<input type="text" class="xxx" value="0"> </div> Total:<input type="text" class="zzz" value="0"> </form>
JS
$(function() { $('.category').each(function() { var category = this; //選択項目 $('input[class="value"]', this).change(function() { var fee = []; $('input[class="value"]:checked' , category).each(function() { var num = parseInt($(this).val()); fee.push(num); }); var subtotal = 0; for (var i = 0; i < fee.length; i++) { subtotal += fee[i]; } $('input[class="aaa"]:checked' , category).each(function() { //入力値 var aaa = parseInt($(this).val()); $('.pages', category).on('change', function() { var str = $(this).val(); var pageNum = Number(str.replace(/[^0-9]/g, '')); if(pageNum == 0) { pageNum = ''; } $(this).val(pageNum); var ccc = []; if(pageNum != 0) { var price = pageNum * aaa; ccc.push(price); } var subtotal = 0; for (var i = 0; i < ccc.length; i++) { subtotal += ccc[i]; } }); }); $('.xxx', category).val(subtotal); var array = []; $('.xxx').each(function() { var num = parseInt($(this).val()); array.push(num); }); var total = 0; for (var i = 0; i < array.length; i++) { total += array[i]; } $('input[class="zzz"]').val(total); }); }); });
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/04 13:33