回答:
最初にカートテンプレート/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
を編集し、フォーム要素にidを追加して、アクセスしやすくします。'id = "cart-form"'を追加するとします。
次に、カートのアイテムをレンダリングするテンプレートを編集します。
そして<input>
、名前の要素cart[<?php echo $_item->getId() ?>][qty]
にこれを追加します:
onchange="$('cart-form').submit()"
しかし、これを行うことはお勧めしません。ユーザーにとっては本当に迷惑です。(少なくとも私にとっては)。
サイトに非競合モードにjQueryが含まれていると仮定すると、非同期でこれを行う方法があります(これは非常に面倒です!)。
jQuery(document).ready(function(){
jQuery('#shopping-cart-table')
.on(
'change',
'input[name$="[qty]"]',
function(){
var form = jQuery(jQuery(this).closest('form'));
// we'll extract the action and method attributes out of the form
// kick off an ajax request using the form's action and method,
// with the form data as payload
jQuery.ajax({
url: form.attr('action'),
method: form.attr('method'),
data: form.serializeArray()
});
}
);
});
これは次のことを前提としていることを指摘する必要があります。
状況に合わせて、2行目と5行目のコード内のセレクターをそれぞれ簡単に調整する必要があります。
jQueryバージョンが古い場合、成功しません。私は次のような方法を見つけました、私たちの友人マリウスの指示に従って挿入する
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
アクセスしやすくするために、フォーム要素にidを追加します。追加するとしましょうid="cart-form"
ファイルを開く
app/design/frontend/{package}/{theme}/template/downloadable/checkout/cart/item/default.phtml
そして、ファイルの最後までスクロールすると、数量の増減を行うJavaScriptが見つかります。関数は次のようになります。
function plusQty(itemId){
qty = $('qty'+itemId).value;
qty = parseInt(qty);
qty++;
$('qty'+itemId).value = qty;
}
function minusQty(itemId){
qty = $('qty'+itemId).value;
qty = parseInt(qty);
if(qty>0){
qty--;
$('qty'+itemId).value = qty;
}
}
このための変更:
function plusQty(itemId){
qty = $('qty'+itemId).value;
qty = parseInt(qty);
qty++;
$('qty'+itemId).value = qty;
document.getElementById("cart-form").submit();
}
function minusQty(itemId){
qty = $('qty'+itemId).value;
qty = parseInt(qty);
if(qty>0){
qty--;
$('qty'+itemId).value = qty;
document.getElementById("cart-form").submit();
}
}