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

227
Visualizações
Laravel 8: ¿cómo mantener visibles los campos "marcados" de la radio después de la actualización `validate ()`?

Tengo un formulario con "¿Este caso tiene un número de IR?"
En caso afirmativo, muestre los campos. Si no, ocultar y mostrar a los demás.

estoy usando

  • función validate() .
  • old() para mantener los datos después del envío fallido del formulario, también conocido como mensajes de error de validate() .
  • JQuery mostrar/ocultar para los campos.

Para la entrada de radio, usé old() como este:

 <input class="btn-check" type="radio" name="checkIR" value="haveIR" @if(!old('checkIR')) checked @endif id="haveIR" required> <input class="btn-check" type="radio" name="checkIR" value="noIR" @if(old('checkIR')) checked @endif id="noIR">

para mantener el checked como está después de la validate() , pero tiene errores, cuando verifico "Sí" y actualizo, marca "No" cuando debe ser como "Sí".

En cuanto a mostrar/ocultar, esto es lo que hice:

 // Show/Hide fields based on radio button option $(document).ready(function() { $('input[name="checkIR"]').click(function() { var inputValue = $(this).attr("value") var targetField = $("." + inputValue); $(".box").not(targetField).slideUp(); $(targetField).slideDown(); }); });

Con ayuda de css:

 .box { display: none; }

Cómo funciona el código:
Si la radio yes/haveIR está marcada: muestre todos los campos que contengan class="box haveIR"

Problemas tratando de resolver:

  • ¿Cómo arreglar/mejorar el pequeño error en la entrada old() ?
  • Si el usuario marcó "sí", ¿cómo mantener los campos de yes visibles incluso después de que falló la validate() ?
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Dado que las entradas de radio tienen el mismo nombre, en ambos casos su sesión tiene "checkIR" y cuando intente verificarlo con old('checkIR') devolverá verdadero independientemente de su valor. Es por eso que se marca "No".

Por lo tanto, para encontrar el antiguo seleccionado, debe verificar por su valor, no si existe en la sesión o no.

Un código como este debería funcionar para usted;

 <input class="btn-check" type="radio" name="checkIR" value="haveIR" @if(old('checkIR') == 'haveIR') checked @endif id="haveIR" required> <input class="btn-check" type="radio" name="checkIR" value="noIR" @if(old('checkIR') == 'noIR') checked @endif id="noIR">

O;

Puede utilizar 0 y 1 para los valores. Dado que old('checkIR') devolverá '0' o '1' y PHP interpretará '0' como falso y '1' como verdadero, el comportamiento será como usted desea.

Y por mantener visibles los campos relacionados;

Puede ejecutar algún script cuando el documento esté listo y configurar los campos relacionados visibles por valor de entrada.

 $(document).ready(function() { var input = $('input[name="checkIR"]:checked'); if (input) { // if any checked radio when document ready var targetField = $("." + input.val()); $(".box").not(targetField).slideUp(); $(targetField).slideDown(); } });

Nota: no ejecutó el script, puede tener errores, pero entiende el punto.

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