Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] SetCustomValidity: criando um erro

Se eu quisesse validar só ano de nascimento para que ano de nascimento nao seja muito abaixo (ex: ano 1000), como eu criaria uma mensagem de erro customizada usando o setCustomValidity (igual como a Moni fez para verificar se é maior de idade ou nao)? Tem como fazer isso? Eu tentei fazer, mas sempre cai no "customErro" e passa a mensagem "Você deve ser maior que 18 anos para se cadastrar'. E eu queria passar mensagem 'ano de nascimento inválido'

1 resposta
solução!

Sim, é possível criar uma mensagem de erro customizada para validar apenas o ano de nascimento. Você pode fazer isso adicionando uma condição no código da função ehMaiorDeIdade. Veja um exemplo:

export default function ehMaiorDeIdade(campo) {
    const dataNascimento = new Date(campo.value);
    const anoNascimento = dataNascimento.getFullYear();
    const anoAtual = new Date().getFullYear();
    
    if (anoNascimento < 1900 || anoNascimento > anoAtual) {
        campo.setCustomValidity('Ano de nascimento inválido');
    } else if (!validaIdade(dataNascimento)) {
        campo.setCustomValidity('Você deve ser maior que 18 anos para se cadastrar');
    } else {
        campo.setCustomValidity('');
    }
}

Dessa forma, se o ano de nascimento for menor que 1900 ou maior que o ano atual, a mensagem de erro "Ano de nascimento inválido" será exibida. Caso contrário, a validação de maioridade será feita normalmente.

Espero ter ajudado! Bons estudos :)