0

ユーザーが商品の数量を更新したときに合計金額を更新する機能があります。フォームが生成されたとき、合計は合計を更新しませんが、ページを更新すると機能します。.on関数を使用する必要があると思いますが、よくわかりません。

$('.qty').keyup(function(event){
    var total = parseFloat($('#total').text());
    var newTotal = 0;
    var id = this.id.replace('qty-','');
    var qty = $('#qty-'+id).val();

    $('ol li').each(function(idx, li){
        var lId = li.id.replace('cart-','');
        var price = $('#price-'+lId).text();
        var lQty = $('#qty-'+lId).val();
        newTotal += parseFloat(price) * parseFloat(lQty);
    }); 

    $('#total').html(newTotal.toFixed(2));

    $.ajax({
        type: "POST",
        url: "resources/changeQty.php",
        data:{ id: id, qty: qty },
        cache: false,
    });

});

テキストフィールドのコードは次のとおりです。

<input type="text" name="newQty" id="qty-'.$productId.'" class="qty" size="2" maxlength="3" value="1" />
4

2 に答える 2

0

keyup 関数を使用するのではなく、「Peeyush」で提案されている .on 関数を使用しました。この投稿を見てください: イベントハンドラーが作成された後に追加された要素に対して jQuery.on() は機能しますか?

私はこれを変更しました:

$('.qty').keyup(function(event){});

これに:

$('#mainCart').on("keyup",".qty",function(e){});

「keyup」はトリガー イベントです。「.qty」は、イベントをトリガーするセレクターです。この場合、「keyup」は、誰かが「.qty」でキーを押したときに発生させたい機能です。

うまく説明できていない場合は申し訳ありません

于 2013-03-13T23:29:19.823 に答える
0

データベースが正しく更新された場合、問題は JavaScript の価格計算 (中央のセクション) にあります。

要素を含むセクションも投稿する必要があり#totalますが、これは正しくないと思います。

$('#total').html(newTotal.toFixed(2));

が入力の場合#totalは、次のように置き換える必要があります。

$('#total').val(newTotal.toFixed(2));
于 2013-03-13T22:47:56.803 に答える