Saltar al contenido

Actualizar automáticamente la cantidad del carrito cuando se cambia la cantidad

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *