Automatically update cart

What we will achieve:

We are going to add the + and – buttons on each side of the input number in both the Product Detail and the Shopping Cart:

Add buttons to numerical input

And in the shopping cart we will add the function for the automatic update:

How do we do it?

To achieve this we are going to add the following script in our custom.js (or the javascript sheet you manage in your child theme):

The .pi-addCart class is the class we put on the Elementor widget in the Product Detail template. You can replace the class with the class of your choice.

				
					(function($) {
	$(document).ready(function() {

// **************************************************
// AÑADIR + Y - EN QUANTITY
// **************************************************

	if ($('.pi-addCart').length || $('.shop_table').length) {
		attachQtyButtons();
		if ($('.shop_table').length) {
			$(document.body).on("updated_cart_totals", function () {
				attachQtyButtons();
			});
		}
	}

	let updateCartTimeout;

	function attachQtyButtons() {
		const inputs = document.querySelectorAll(".input-text.qty");

		inputs.forEach((input) => {
			const decrementButton = document.createElement("button");
			decrementButton.textContent = "-";
			decrementButton.classList.add("decrement-button");

			const incrementButton = document.createElement("button");
			incrementButton.textContent = "+";
			incrementButton.classList.add("increment-button");

			input.insertAdjacentElement("beforebegin", decrementButton);
			input.insertAdjacentElement("afterend", incrementButton);

			decrementButton.addEventListener("click", function (e) {
				e.preventDefault();

				if (e.pointerType === "mouse" && input.value > input.min) {
					input.value = parseInt(input.value) - 1;
					$(input).change();
					updateCartAfterDelay(e);
				}
			});

			incrementButton.addEventListener("click", function (e) {
				e.preventDefault();
				if (input.max != ' ' || parseInt(input.value) < parseInt(input.max)) {
					input.value = parseInt(input.value) + 1;
					$(input).change();
					updateCartAfterDelay(e);
				}
			});
		});

		function updateCartAfterDelay(e) {
			if (updateCartTimeout) {
				clearTimeout(updateCartTimeout);
			}

			updateCartTimeout = setTimeout(() => {
				updateCartProducts(e);
			}, 1000); // Espera 1 segundo antes de ejecutar la actualización del carrito
		}
	}

	function updateCartProducts(e) {
		let cartForm = $('form.woocommerce-cart-form');

		if ($(cartForm).length) {
			$('[name="update_cart"]').click();
			e.preventDefault();
		}
	}
	
		}); //Cerrar function
})(jQuery); //Cerrar jquery
				
			

Now, let’s add some simple styles:

				
					/* ***************************************** */
/* BOTONES DE CANTIDAD */
/* ***************************************** */

.quantity input.qty{
    border: none !important;
}
.quantity{
	display: flex;
	gap: 0px;
	padding-right: 20px;
	align-items: center;
}
.quantity input{
	display: block !important;
	text-align: center !important;
	width: 40px !important;
	height: 10px !important;
	padding: 0px !important;
	font-size: 16px !important;
	background: red;
	pointer-events: none !important;
}
.quantity button{
	color: #000 !important;
	background: transparent !important;
	border: none !important;
	min-width: auto !important;
	width: auto !important;
	padding: 0px !important;
	margin: 0px !important;
	font-family: var(--e-global-typography-0c26c95-font-family), Sans-serif  !important;
	font-size: 28px !important;
	font-weight: normal !important;
	text-align: center !important;
}
.quantity button.increment-button{
	font-size: 19px !important;
}
.quantity input[type=number]::-webkit-inner-spin-button, 
.quantity input[type=number]::-webkit-outer-spin-button { 
	-webkit-appearance: none; 
	margin: 0; 
}
.quantity input[type=number] { 
    -moz-appearance:textfield;
}


				
			

That’s it!

Picture of Graphica Digital Projects
Graphica Digital Projects

Agencia de Desarrollo Web

Icono 3D de un check con fondo morado

Mensaje enviado

Lamentamos de corazon que hayas tenido una mala experiencia.

Hemos enviado los detalles y tu código único de reclamo al correo brindado en el formulario.

Pronto nos contactaremos contigo para juntos encontrar una solución.

¿Deseas revertir tu compra?

1. Generalidades

Nuestra política de devoluciones establece los términos y condiciones bajo los cuales ofrecemos reembolsos o cambios por productos virtuales adquiridos en nuestro sitio web. Al realizar una compra, aceptas esta política en su totalidad.

2. Elegibilidad para Devoluciones

  1. Plazo de Solicitud: Las solicitudes de devolución deben realizarse dentro de los 5 días posteriores a la compra.
  2. Condiciones de Devolución: No se realizarán devoluciones una vez que el producto virtual haya sido publicado en un dominio de producción o si el diseño previo ha sido aprobado por el cliente.
  3. Pagos por Error: En caso de haber realizado un pago por error, las devoluciones solo serán permitidas si no han pasado más de 2 días hábiles. Si han pasado más días, se retendrá el 5% del monto como compensación por gastos de comisiones.

3. Proceso de Devolución

  1. Solicitud: Para iniciar una devolución, contacta a nuestro equipo de atención al cliente a través de [email/contacto] con el número de pedido y una descripción detallada del problema.
  2. Revisión de la Solicitud: Revisaremos tu solicitud y te notificaremos el estado de la devolución en un plazo de 10 días hábiles.
  3. Tiempo de Devolución: El proceso de devolución de dinero tomará un mínimo de 10 días hábiles. El tiempo total de reembolso dependerá también de los plazos de procesamiento de cada entidad bancaria.

4. Excepciones y Reembolsos

  1. Excepciones: En casos de defectos técnicos o errores atribuibles a nosotros, que impidan el funcionamiento adecuado del producto, se considerará la posibilidad de una corrección o reemplazo, en lugar de una devolución.
  2. Reembolsos: No se emitirán reembolsos una vez que el producto haya sido publicado en un dominio de producción o si el diseño ha sido previamente aprobado. Para pagos por error, se aplicará una retención del 5% si han pasado más de 2 días hábiles.

5. Cambios

En lugar de un reembolso, puedes optar por solicitar modificaciones o ajustes, sujeto a evaluación y acuerdo mutuo.

6. Contacto

Para cualquier pregunta o inquietud sobre nuestra política de devoluciones, por favor contacta a nuestro equipo de atención al cliente a través de ventas@graphica.pe.

Nota: Nos reservamos el derecho de actualizar esta política en cualquier momento, y cualquier cambio será efectivo inmediatamente después de su publicación en esta página.

Paga seguro con izipay

Pagos seguros con la plataforma izipay.

Aplican los Términos y condiciones de izipay.

 

Tu privacidad es nuestra prioridad

Al comprar productos aquí, aceptas nuestros Términos y condiciones.