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

197
Visualizações
¿Por qué este formulario se envía dos veces?

Estoy tratando de entender por qué el formulario en el siguiente fragmento se envía varias veces, después de seguir los pasos:

  1. Haga clic en uno de los botones de envío. Aparecerá un div de confirmación.
  2. Haga clic en el botón Cancel en la confirmación.
  3. Ahora haga clic en el otro botón Enviar.
  4. Haga clic en el botón Yes en la confirmación.
  5. El registro de la consola muestra que el controlador de envío de formularios se activa dos veces.

¿Alguien puede ayudarme a ver cómo/por qué sucede esto, de modo que pueda evitar envíos múltiples?

 const $form = $("#form-test"); const $confirm = $("#confirm"); $form.on("submit", function (e, $btn) { e.preventDefault(); console.log("Submitting!", $btn); }); $confirm.find("button").on("click", function () { $confirm.hide(); }); $form.find("button").on("click", function (e) { const $btn = $(this); $("#btn-yes").one("click", function () { $form.trigger("submit", $btn); }); $("#btn-cancel").one("click", function () { console.log("Cancelled!", this); }); $confirm.show(); });
 #form-container, #confirm { border: 1px solid #000; padding: 10px; } #confirm { display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="confirm"> Are you sure? <button id="btn-cancel" type="button">Cancel</button> <button id="btn-yes" type="button">Yes</button> </div> <div id="form-container"> <form id="form-test"> <input type="text" name="test" value="Foo"> <button type="button">Submit 1</button> <button type="button">Submit 2</button> </form> </div>

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Estás ejecutando lo siguiente:

 $("#btn-yes").one("click", function () { $form.trigger("submit", $btn); });

dentro del $form.find("button").on("click" . Si hace clic en los botones dos veces, agregará el controlador dos veces.

Quite el controlador anterior antes de agregar el nuevo, o agregue los controladores sí/cancelar fuera (no es necesario que se agreguen dentro del controlador de clic).

 const $form = $("#form-test"); const $confirm = $("#confirm"); $form.on("submit", function(e) { e.preventDefault(); console.log("Submitting!"); }); $confirm.find("button").on("click", function() { $confirm.hide(); }); $("#btn-yes").one("click", function() { $form.trigger("submit"); }); $("#btn-cancel").one("click", function() { console.log("Cancelled!", this); }); $form.find("button").on("click", function() { $confirm.show(); });
 #form-container, #confirm { border: 1px solid #000; padding: 10px; } #confirm { display: none; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="confirm"> Are you sure? <button id="btn-cancel" type="button">Cancel</button> <button id="btn-yes" type="button">Yes</button> </div> <div id="form-container"> <form id="form-test"> <input type="text" name="test" value="Foo"> <button type="button">Submit 1</button> <button type="button">Submit 2</button> </form> </div>

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