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

86
Vistas
Espere las solicitudes pendientes antes de finalizar el envío en Javascript

Tengo la siguiente situación en una aplicación web (javascript-jQuery):

  • Un formulario que usa el validador de https://jquerytools.org/
  • En el formulario hay una entrada enmascarada [obligatoria] (cuenta bancaria) de https://github.com/RobinHerbots/Inputmask , que lanza una solicitud en el servidor en caso de cambio y durante la solicitud, la entrada se deshabilita para evitar modificaciones.

Cuando se envía el formulario, a veces, cuando la cuenta bancaria está vacía, la validación "requerida" no se verifica. Después de una depuración loca, he visto que el control de máscara de entrada activa un evento de cambio y, por lo tanto, la solicitud se envía al servidor (por lo que la entrada está deshabilitada) y el validador no valida lo requerido, porque tiene como condición que los campos deshabilitados no sean validados.

Me gustaría "pausar" la validación hasta que finalicen todas las solicitudes, pero no he encontrado la manera de hacerlo fuera de la biblioteca. ¿Alguna idea de cómo resolver este problema sin modificar las librerías externas ("jquery inputmask" y "jquery tools")?

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

0

Finalmente he elegido la siguiente solución:

  • Rastree cuándo se envía el formulario
  • Seguimiento cuando hay solicitudes pendientes

Cuando se presiona el botón de enviar, verifique si hay solicitudes pendientes antes de enviar. Utilizo un intervalo de javascript para verificar cada 200 ms (y durante un máximo de 10 intervalos para evitar formularios no enviados por seguimiento erróneo).

Por otro lado, compruebo si el formulario se está enviando antes de enviar una solicitud de regla en el servidor. Si el formulario se está enviando, no calculo la regla.

Publico el código adaptado para entender.

Función para verificar el envío del formulario:

 // Check the form submit $(".submitButtom", ctl).click(function (e) { var $form = $(this).closest('form'); var areServerRulesRunning = $.mpm.formengine.genericRules.runningServerRules > 0; if (areServerRulesRunning) { // If are server rules running keep checking before submit var retries = 10; var interval = setInterval(function() { if ($.mpm.formengine.genericRules.runningServerRules <= 0 || retries < 0) { clearInterval(interval); // variable to track the submission of the form $.mpm.formengine.form.submitting = true; $form.submit(); } retries--; }, 200); } else { $form.submit(); } }); // Later on a callback after submit (don't published): $.mpm.formengine.form.submitting = false;

Función que ejecuta las reglas del servidor en los cambios de entrada:

 ... // Rule execution serverCalculationRule: function (wfName, $sourceInput, controlScope, ruleData) { if ($.mpm.formengine.form.submitting === true) { // If the form is submitting don't send the request to the server return; } $.mpm.formengine.genericRules.runningServerRules++; $.post($.mpm.Constants.FormEngine.UrlDoAction, doActionData, function (data) { // SUCCESS } ) .always(function () { // ALWAYS $.mpm.formengine.genericRules.runningServerRules--; }); }, ...
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