Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

244
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda