Solución:
Primero edite la plantilla del carrito /app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
y agregue una identificación en el elemento del formulario para facilitar el acceso. Digamos que agrega ”;
Ahora edite las plantillas que representan los elementos del carrito:
- app / design / frontend / {package} / {theme} /template/checkout/cart/item/default.phtml
- app / design / frontend / {package} / {theme} /template/downloadable/checkout/cart/item/default.phtml
y en el <input>
elemento con el nombre cart[<?php echo $_item->getId() ?>][qty]
Agrega esto:
onchange="$('cart-form').submit()"
Pero no recomiendo hacer esto. Es realmente molesto para los usuarios. (al menos para mi).
Suponiendo que su sitio tiene jQuery incluido en modo sin conflicto, aquí hay una forma de hacerlo de forma asincrónica (¡mucho menos molesta!).
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()
});
}
);
});
Debo señalar que esto hace las siguientes suposiciones:
- Su carrito de compras vive dentro de un elemento con la identificación de mesa-carrito-de-compras
- Tus campos de entrada para cantidad tener un atributo de nombre que termine con [qty]
Debería ser fácil ajustar los selectores en el código en las líneas 2 y 5, respectivamente, para que coincidan con sus circunstancias.