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

254
Vistas
Javascript: ¿cómo evito que las funciones se ejecuten varias veces, de forma incremental, después de hacer clic en cada botón?

Estoy estupefacto tratando de encontrar una manera de evitar que el clic del botón se reproduzca varias veces según la cantidad de clics. Si hago clic en "submitButton" una vez, todo se ejecuta una vez. Si hago clic en él por segunda vez, todo se ejecuta dos veces. Si hago clic en él por tercera vez, todo se ejecuta tres veces... Y así sucesivamente...

Aquí está el código que estoy ejecutando para iniciar la ejecución de varias funciones. Las funciones posteriores toman datos de una base de datos, crean lotes de 100 y luego insertan esos datos en una solicitud HTTP POST.

 submitButton.addEventListener("click", () => { if (document.getElementById("subject").value == "") { alert( "Please add a Subject for your Push Notification before sending." ); } else if (document.getElementById("body").value == "") { alert( "Please add a Message Body for your Push Notification before sending." ); } else if ( document.querySelectorAll("input[type=radio]:checked").length < 1 ) { alert("Please select a Jump-To page before sending."); } else { btn.classList.add("button--loading"); submitButton.disabled = true; SelectData(); } });

Siguiendo SelectData(); son las funciones que procesan por lotes, crean y envían la solicitud HTTP POST. Al final de todo esto, intenté agregar lo siguiente para evitar algún tipo de almacenamiento de CADA evento de clic, operando bajo la suposición de que ese es mi problema. Es decir, que cada clic se almacena localmente en el navegador y, por lo tanto, si el número de clics = 2, entonces SelectData(); se ejecutará dos veces junto con todas las demás funciones relacionadas con el evento de clic.

 submitButton.removeEventListener("click", null); submitButton.disabled = false;

Tenía la esperanza de que lo anterior fuera mi respuesta, pero no ha hecho nada diferente. Me encantaría un poco de ayuda y estoy feliz de proporcionar más detalles si es necesario, pero estoy perplejo. ¡Agradezco su ayuda para señalarme en la dirección correcta!

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

0

El segundo argumento para removeEventListener debe ser exactamente la función provista para addEventListener

 function myOnClickFunc() { console.log("oh jolly, a click!") } myElement.addEventListener("click", myOnClickFunc) myElement.removeEventListener("click", myOnClickFunc) // note the exact same object is passed

Esto probablemente lo arreglaría. Aunque es preferible que reescriba su código de una manera en la que use el mismo detector de eventos repetidamente en lugar de eliminarlo y volver a agregarlo.

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