この問題に対処する方法はたくさんあります。私がそれに入る前に思い出させるように、決してクライアント側で「計算価格」のようなことをしないでください。つまり、価格を計算してユーザーを表示することができますが、実際の計算はサーバー側で行う必要があります(クライアントはフォームの送信を調整して操作できます)。
チェックボックスの結果を集計して結果を表示する簡単な例を作成しました。あなたの目的に合うようにこのコードを操作する方法はたくさんあります。私はjQueryを使いましたが、この問題の他の興味深いオプションがあります(例えば、KnockoutJSをチェックしてください)。
<input type="checkbox" class="adjust one" data-value="1.00" id="so1" /> <label for="so1">$1.00</label> <br/>
<input type="checkbox" class="adjust two" data-value="2.00" id="so2" /> <label for="so2">$2.00</label><br/>
<input type="checkbox" class="adjust one" data-value="3.00" id="so3" /> <label for="so3">$3.00</label>
<p>
Total: <span class="total"></span>
</p>
次に、(jQueryライブラリとともに)次のJavaScriptを組み込みたいとします。
var total;
var calculateTotal = function() {
total = 0.0;
$('input[type="checkbox"]:checked').each(function() {
total += parseFloat($(this).data('value'));
});
$('.total').text(total);
};
$(document).ready(function() {
$('input[type="checkbox"]').live('change', function() {
calculateTotal();
});
calculateTotal(); //do it for initial price
});
calculateTotal()は「チェック」セレクタに一致するチェックボックス(タイプチェックボックスの入力)に基づいて合計を計算します。次に、各チェックボックスからデータ属性「値」を引き出し、その数値に基づいて合計を計算します。あなたの問題のロジックは異なる可能性がありますが、単にcalculateTotalを調整するだけでこれを処理する必要があります。最後に、calculateTotal関数は、チェックボックスが '変更'されたとき(および最初に一度)呼び出されます。
うまくいけば、これはあなたを稼働させる上で大きな助けになるはずです。ここにはJSFiddleライブデモンストレーションがあります。
'
\t \t \t 'メールコレクションと通話応答の両方を選択すると、 248ドルではなく229ドルの割引が適用されますが、コール転送は常に15ドルです。 – pikelet