1

複数のSELECTSとINPUTSからの値を合計する必要があります。これは私がこれまでに持っているものです:

HTML

<label>Item#1</label>
<select name="price[]" id="sel_1">
    <option value="">Options</option>
    <option value="4.00">Small</option>
    <option value="8.00">Medium</option>
</select>
<br>
<label>Item#2</label>
<select name="price[]">
    <option value="">Options</option>
    <option value="4.00">Small</option>
    <option value="8.00">Medium</option>
</select>
<br>
<label>Item#3</label>
<select name="price[]">
    <option value="">Options</option>
    <option value="4.00">Small</option>
    <option value="8.00">Medium</option>
</select>
<br>
<label>Item#4</label>
<input type="checkbox" value="1.00" id="price[3]" name="price[]">
<br>
<label>Item#5</label>
<input type="checkbox" value="2.00" id="price[3]" name="price[]">
<br>
<label>Item#6</label>
<input type="checkbox" value="3.00" id="price[3]" name="price[]">
<br> <span id="usertotal"> </span>

Jクエリ

$('input:checkbox').change(function () {
    var tot = 0;
    $('input:checkbox:checked').each(function () {
        tot += Number($(this).val());
    });
    tot += Number($('#sel_1').val());
    $('#usertotal').html(tot)
});

$('#sel_1').change(function () {
    $('input:checkbox').trigger('change');
});

お気づきのように、最初の選択からの値を合計するだけなので、すべての選択から合計する必要があります。

デモ: http://jsfiddle.net/B9ufP/

4

2 に答える 2

3

これを試してください:(
私はあなたのコードを少し単純化しました)

(function ($) {
    var $total = $('#usertotal');
    $('input,select:selected').on('change', function () {
        var tot = 0;
        $(':checked, select').each(function () {
            tot += ~~this.value;
        });
        $total.html(tot)
    });
}(jQuery))

デモはこちら

于 2013-08-27T21:34:14.937 に答える
3

派手にしたい場合は、 を使用Array.prototype.reduceして値を合計することもできます。

小数がある場合は、 を使用することに注意してくださいparseFloat

var total = [].reduce.call($('select, :checkbox:checked'), function (pv, cv) {
    return parseFloat(pv.value) + parseFloat(cv.value);
});
于 2013-08-27T21:58:49.700 に答える