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

297
Vistas
Cómo deshabilitar el botón mientras se crea el formulario y evitar formularios duplicados

Estoy tratando de hacer que el botón "Enviar" esté deshabilitado al enviar y reenviar datos desde un formulario. Esto es para evitar que el usuario cree varias copias del formulario al hacer clic rápidamente en el botón cuando se guardan los datos iniciales que se ingresaron.

ingrese la descripción de la imagen aquí

Un enfoque que probé fue agregar un antirrebote a la función de JavaScript que maneja las operaciones del botón de envío. Sin embargo, si el usuario continúa haciendo clic en el botón después de 5 segundos, aún se crea el duplicado.

Creo que un mejor enfoque sería deshabilitar el botón mientras se envían los datos y dar una indicación al usuario de que los datos se están guardando y, una vez completados, volver a habilitar el botón.

Aquí está el código javascript para el contexto:

 setupFormIO: function(submissionFunction) { var $this = this; var submitFunc = submissionFunction; var labelText = "Submit"; if ($this.projectData && !this.readonly) { labelText = "Save"; } var submits = FormioUtils.searchComponents($this.template.components, { "type": "button" } ); if (submits) { _.each(submits, function (component) { component.label = labelText; // var timer; if (timer) { clearTimeout(timer); } // if ($this.readonly) { $("#" + component.id + " > button").on("click", function(evt) { evt.stopPropagation(); location.assign("/project/ProjectHome.aspx"); timer = setTimeout(process, 5000); // }); } }); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Agregar los siguientes fragmentos de código en ubicaciones estratégicas del script que manejan las operaciones durante y después de hacer clic en el botón Enviar ayudó a crear el efecto deseado.

 beforeSubmit: function (submission, next) { const btns = document.querySelectorAll('.btn'); for (const btn of btns) { btn.disabled = true; } $this.isSubmitting = true; console.log("button disabled"); if (submits) { _.each(submits, function (component) { console.log("renabled"); for (const btn of btns) { btn.disabled = false; } $this.isSubmitting = false; console.log("button renabled"); }); }

Sin embargo, esto estaba deshabilitando y habilitando cada botón en la página. En última instancia, se utilizó el siguiente método jquery porque se dirige específicamente a los botones de envío solamente.

 if (submits) { _.each(submits, function (component) { $("#" + component.id + " > button").prop('disabled', true); }); } window.axios.post($this.baseUri + '/validate', submission.data) .then(function (d) { next(); }) .catch(function (e) { var message = "Validation Failed:"; $this.isSubmitting = false; if (submits) { _.each(submits, function (component) { $("#" + component.id + " > button").prop('disabled', false); });

También quería señalar que después de hacer clic en el botón Enviar, la página se redirige a una página de resumen para evitar que se vuelva a hacer clic en el botón Enviar.

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