2

チェックボックスが選択されると価格と数量を計算するコードが少しありますが、チェックボックスのチェックを外して再チェックし、チェックボックスの変更を再起動せずにデフォルトの1から変更された場合、数量フィールドへの変更を実装するのに問題があります.

<table>
<tr>
    <td width="10%">&nbsp;</td>
    <td width="20%">Item</td>
    <td width="10%">Price</td>
    <td width="10%">Quantity</td>
    <td width="10%">Total</td>
</tr>
<tr>
    <td >
        <input type="checkbox" name="Extras" value="id" />
    </td>
    <td>Test Item 1</td>
    <td class="price">12.50</td>
    <td><input name="qty" class="quantity" value="1"></td>
    <td class="total"></td>
</tr>
    <tr>
    <td >
        <input type="checkbox" name="Extras" value="id" />
    </td>
    <td>Test item 2</td>
    <td class="price">20</td>
    <td><input name="qty" class="quantity" value="1"></td>
    <td class="total"></td>
</tr>

</table>

jQuery

$(document).ready(function() {
$('input:checkbox').change(function() {
    var $this = $(this),
        parentRow = $this.closest('tr'),
        totalCell = parentRow.find('.total');

    if ($this.prop('checked') === true) {
        var price = parseFloat(parentRow.find('.price').html());
        var quantity = parseFloat(parentRow.find('.quantity').val(
           // assuming I'd need a $('input:text').change(function() { 
           // etc at this point but all i've tried doesn't work
           ));
        totalCell.text(price * quantity)
    }
    else totalCell.text('')
});

});

それが理にかなっていることを願っています

4

3 に答える 3

0

数量テキストボックスに関連付けられたイベントはありません。

このjsFiddleまたは以下のコードを確認してください。

$('.quantity').change(function() {
    var $this = $(this),
        parentRow = $this.closest('tr'),
        totalCell = parentRow.find('.total');
        checkBox = parentRow.find('input:checkbox');  
    if (checkBox.prop('checked') === true) {
        var price = parseFloat(parentRow.find('.price').html());
        var quantity = parseFloat($this.val());
        totalCell.text(price * quantity)
    }
    else totalCell.text('')
});
于 2012-11-19T05:25:37.330 に答える
0

このようにjqueryを変更します

$(document).ready(function() {
    $('input').change(function() {
        var $this = $(this),
            parentRow = $this.closest('tr'),
            totalCell = parentRow.find('.total');

        if ($this.prop('checked') === true || parentRow.find('input:checkbox').prop('checked') == true) {
            var price = parseFloat(parentRow.find('.price').html());
            var quantity = parseFloat(parentRow.find('.quantity').val());
            totalCell.text(price * quantity)
        }
        else totalCell.text('')
    });


});​

デモ

于 2012-11-19T05:30:56.270 に答える
0

私が修正した小さな問題がありました。それを調べて、必要なものを教えてください。

$(document).ready(function() {
$('input:checkbox').change(function() {
    var crntSelection = $(this),
        parentRow = crntSelection.closest('tr'),
        totalCell = parentRow.find('.total');

    if ($(this).is(':checked')) {
        alert('checje');
        var price = parseFloat(parentRow.find('.price').html());
        var quantity = parseFloat(parentRow.find('.quantity').val(
           // assuming I'd need a $('input:text').change(function() { 
           // etc at this point but all i've tried doesn't work
           ));
        alert(price);
        alert(quantity);
        totalCell.html(price * quantity)
    }
    else totalCell.text('')
});

});​
于 2012-11-19T05:31:49.923 に答える