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

217
Vistas
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 Respuestas
Responde la pregunta

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 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