Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

215
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!