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!
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 passedEsto 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.