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

118
Views
Valide múltiples campos con diferentes índices usando el formulario de gancho de reacción

Estoy tratando de validar algunos campos que son parte de mi matriz de campos. Tienen los mismos nombres, pero tienen un índice de matriz diferente.

 <Select {...register(`documents.${index}.language`, { validate: (v) => getValues(v), })} sx={{ textAlign: 'center' }} > {availableLanguages ?.sort((a) => (a.name === 'pl' ? -1 : 1)) // sorting so pl is default value .map((language) => ( <option key={language.name} value={language.name}> {language.name.toUpperCase()} </option> ))} </Select>

Quiero validar obteniendo todos los valores de idioma y verificar si todos son únicos.

La matriz de salida crea un objeto para cada campo que el usuario ha decidido completar y devuelve un valor de idioma en ese objeto y algunos otros.

[{idioma: 'en'},{idioma: 'en'}, {idioma: 'br'}]

Quiero validar esto, preferiblemente antes de enviar, lo que significa que tendría que hacerse en la función de validación del campo.

De otra manera, también podría validarlo al enviarlo, sin embargo, tampoco estoy seguro de cómo hacerlo de manera eficiente.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Para cualquier persona en el futuro, esta es la forma en que he podido realizar esta validación. Un bucle for simple, hay otras formas, pero no obtienen activamente el valor del campo a menos que se mantengan en el estado.

 <Select {...register(`documents.${index}.language`, { validate: (v) => { for (let x = 0; x < index; x++) { if (v === getValues(`documents.${x}.language`)) return false; } }, })} sx={{ textAlign: 'center' }} > {sortLanguages(availableLanguages).map((language) => ( <option key={language.name as string} value={language.name as string}> {language.name.toUpperCase()} </option> ))} </Select>
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!