Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
¿Cómo apuntar a un formulario específico al enviar si hay varios formularios con el mismo nombre de clase en una página usando javascript de vainilla?

Estoy interesado en una función Vanilla JS que se enfocará en el formulario específico que se envió al tener múltiples formularios con el mismo nombre de clase en la misma página. El uso de ID no es una opción para cada formulario.

Digamos que tengo 10 formularios como el siguiente en alguna página:

 <form class="add_to_cart"> <div class="btn btn__add_to_cart">Add To Cart</div> <input type="hidden" id="some_product_id"> </form>

¿Cómo puedo obtener con JS (no jQuery, por favor) el formulario específico en el que se hizo clic en el elemento div (no usé el elemento de button a propósito, estoy interesado en la opción div )?

Realmente apreciaré su ayuda.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El verdadero problema es que estás haciendo esto de una manera más difícil de lo que debe ser.

Si solo haces:

 <form class="add_to_cart"> <input type='submit' class="btn btn__add_to_cart" value='Add To Cart' /> <input type="hidden" id="some_product_id"> </form>

Al hacer clic en el botón se enviará el formulario correcto. Puede cambiar el estilo del botón usando CSS si lo desea.

PERO...

Si los divs son necesarios, puedes hacer algo como

 document.querySelectorAll("DIV").forEach(function(elem) { elem.addEventListener("click", function(e) { e.target.closest("form").submit(); }); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro de lo que quiere hacer con él, pero aquí hay un controlador de clics que usa las clases btn y btn__add_to_cart que son un div.

También agregué un controlador de envío de formulario para el formulario más cercano en el que se hizo clic.

 let submitEvent = new CustomEvent("submit", { "bubbles": true, "cancelable": true }); function logSubmit(event) { console.log(`Form Submitted! Time stamp: ${event.timeStamp}`); let button = event.currentTarget.querySelectorAll('input')[0]; console.log(`Form button ID: ${button.id}`); event.preventDefault(); } var evt = new CustomEvent("submit", { "bubbles": true, "cancelable": true }); let allforms = document.querySelectorAll('form.add_to_cart'); Array.from(allforms).forEach(function(element) { element.addEventListener('submit', logSubmit); }); function clickedMe(event) { console.log(event.currentTarget === this) // logs `true` let closestForm = event.currentTarget.closest('form.add_to_cart'); console.log("My Classes:", this.className); closestForm.dispatchEvent(submitEvent); } const clickableButtons = document.querySelectorAll(`div.btn.btn__add_to_cart`); console.log(clickableButtons.length); Array.from(clickableButtons).forEach(function(element) { element.addEventListener('click', clickedMe, false); });
 <form class="add_to_cart"> <div class="btn btn__add_to_cart">Add To Cart</div> <input type="hidden" id="some_product_id"> </form> <form class="add_to_cart"> <div class="btn btn__add_to_cart">Add To Cart 2</div> <input type="hidden" id="some_product_id2"> </form>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda