Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Desafio Hora da Prática - Implementar Função de Validação de Idade

Segue meus melhoramentos e código HTML + Java Script de como eu fiz o desafio:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Verificar Idade</title>
</head>
<body>

    <h1>Verificar se a Pessoa é maior ou menor de Idade</h1>
    <label for="idadeInput">Digite sua data de nascimento:</label>
    <input type="date" id="idadeInput" placeholder="Digite aqui sua data de nascimento!">
    <button onclick="verificar()">Verificar</button>
    <p id="resultado"></p>

    <script>
        function verificar() {
            let dataNascimento = document.getElementById("idadeInput").value;

            if (dataNascimento === "") {
                document.getElementById("resultado").textContent = "Por favor, insira sua data de nascimento.";
                return;
            }

            let resultado = validarIdade(dataNascimento);
            document.getElementById("resultado").textContent = resultado;
            document.getElementById("idadeInput").value = "";
        }

        function validarIdade(dataNascimento) {
            let dataNascimentoObj = new Date(dataNascimento);

            if (isNaN(dataNascimentoObj)) {
                return "Data inválida. Insira uma data válida.";
            }

            let dataAtual = new Date();
            let idade = dataAtual.getFullYear() - dataNascimentoObj.getFullYear();

            // Ajuste da idade se ainda não fez aniversário este ano
            if (dataAtual.getMonth() < dataNascimentoObj.getMonth() || 
                (dataAtual.getMonth() === dataNascimentoObj.getMonth() && dataAtual.getDate() < dataNascimentoObj.getDate())) {
                idade--;
            }

            // Exibe o alerta apenas se for menor de idade
            if (idade < 18) {
                alert("Menores de idade devem estar acompanhados de um responsável.");
                return "Você é menor de Idade";
            }

            return "Você é maior de Idade";
        }
    </script>

</body>
</html>
2 respostas
solução!

Olá, Paulo. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótima a sua abordagem para validar a idade com a data de nascimento. A estrutura está bem organizada, e a função validarIdade faz o cálculo corretamente.

Uma melhoria seria validar se a data inserida é válida antes de calcular a idade. Se um valor inválido for passado, o new Date(dataNascimento) pode gerar um resultado inesperado. Veja como verificar isso:


function validarIdade(dataNascimento) {
    let dataNascimentoObj = new Date(dataNascimento);
    
    if (isNaN(dataNascimentoObj)) {
        return "Data inválida. Insira uma data válida.";
    }

    let dataAtual = new Date();
    let idade = dataAtual.getFullYear() - dataNascimentoObj.getFullYear();

    if (dataAtual.getMonth() < dataNascimentoObj.getMonth() || 
        (dataAtual.getMonth() === dataNascimentoObj.getMonth() && dataAtual.getDate() < dataNascimentoObj.getDate())) {
        idade--;
    }

    return idade >= 18 ? "Você é maior de Idade" : "Você é menor de Idade";
}

Aqui, isNaN(dataNascimentoObj) verifica se a data é válida antes de continuar.

Conte com o apoio do Fórum. Abraços e bons estudos.

Obrigado pela dica espero que esteja certo agoa:

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Verificar Idade</title>
</head>
<body>

    <h1>Verificar se a Pessoa é maior ou menor de Idade</h1>
    <label for="idadeInput">Digite sua data de nascimento:</label>
    <input type="date" id="idadeInput" placeholder="Digite aqui sua data de nascimento!">
    <button onclick="verificar()">Verificar</button>
    <p id="resultado"></p>

    <script>
        function verificar() {
            let dataNascimento = document.getElementById("idadeInput").value;

            if (dataNascimento === "") {
                document.getElementById("resultado").textContent = "Por favor, insira sua data de nascimento.";
                return;
            }

            let resultado = validarIdade(dataNascimento);
            document.getElementById("resultado").textContent = resultado;
            document.getElementById("idadeInput").value = "";
        }

        function validarIdade(dataNascimento) {
            let dataNascimentoObj = new Date(dataNascimento);

            if (isNaN(dataNascimentoObj)) {
                return "Data inválida. Insira uma data válida.";
            }

            let dataAtual = new Date();
            let idade = dataAtual.getFullYear() - dataNascimentoObj.getFullYear();

            // Ajuste da idade se ainda não fez aniversário este ano
            if (dataAtual.getMonth() < dataNascimentoObj.getMonth() || 
                (dataAtual.getMonth() === dataNascimentoObj.getMonth() && dataAtual.getDate() < dataNascimentoObj.getDate())) {
                idade--;
            }

            // Exibe o alerta apenas se for menor de idade
            if (idade < 18) {
                alert("Menores de idade devem estar acompanhados de um responsável.");
                return "Você é menor de Idade";
            }

            return "Você é maior de Idade";
        }
    </script>

</body>
</html>