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

201
Visualizações
¿Cómo restablecer la función recursiva en JS?

Tengo una función para seguir el formulario de varios pasos:

 function multistep() { function disableBtn() { continueButton.attr('disabled', true); } let select = $('.cf7mls_current_fs select'); let continueButton = $('.cf7mls_current_fs .cf7mls_next'); $('.wpcf7-submit').attr('disabled', false); $('.preloader-form-wrap').hide(); $('.select-choosen').each(function () { $(this).removeClass("select-choosen"); }); let selectArr = []; let currentArr = []; select.each(function (i, obj) { currentArr.push($(obj).attr("name")); }) continueButton.attr('disabled', true); select.on('change', function () { if ($(this).prop('selectedIndex') !== 0) { if ($(this).hasClass("select-choosen") === false) { $(this).addClass("select-choosen"); selectArr.push($(this).attr("name")); } } else { $(this).removeClass("select-choosen"); selectArr.shift(); disableBtn(); } console.log(selectArr.length, currentArr.length); if (selectArr.length === currentArr.length) { continueButton.attr('disabled', false); $(continueButton).on("click", function () { selectArr = []; $('.preloader-form-wrap').show(); setTimeout(() => { // if is everything ok, runs function again! // but array from above will not be reset multistep(); }, 1000); }); } }); }

Y el objetivo de la función es habilitar el botón si se completa cada paso, y esto funciona, pero tengo un problema con

 let selectArr = [];

Cuando una función se llama a sí misma, la variable interna de (matriz) anterior no se restablecerá. Y la función se llamará varias veces.

Función de llamada por primera vez:

 $('.btn-open-form').click(function (e) { .... multistep(); }

Y reiniciar de nuevo:

 function closeForm() { $(document).click(function (e) { if ((e.target.className === "overlay-mobile form-active") == true ) { multistep(); } }

La función de arriba se llamará en el documento init.

Bueno, let selectArr = []; si una matriz de selección de elementos seleccionados en una pestaña, es importante que la longitud de la matriz anterior sea igual a una cantidad de elementos seleccionados que se muestran. Si la longitud es la misma, se habilitará el botón, para saltar a otra pestaña.

about 4 years ago · Juan Pablo Isaza
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