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

Código para de funcionar quando adiciono 'type="module"'

Estou utilizando o VS Code como editor e a extensão Live Server e quando acrescento o type="module" na tag script todas as datas inseridas são tidas como erradas.

                        <input name="nascimento" id="nascimento" class="input" type="date" placeholder="Data de nascimento" data-tipo="dataNascimento" required>
                        <label class="input-label" for="nascimento">Data de nascimento</label>
                        <span class="input-mensagem-erro">Este campo não está válido</span>
                    </div>
                    <div class="input-container">
                        <input name="cpf" id="cpf" class="input" type="text" placeholder="CPF">
                        <label class="input-label" for="cpf">CPF</label>
                        <span class="input-mensagem-erro">Este campo não está válido</span>
                    </div>
                </fieldset>

...

    <script src="js/app.js" type="module"></script>
</body>
</html>
export function valida(input) {
    const tipoDeInput = input.dataset.tipo

    if (validadores[tipoDeInput]) {
        validadores[tipoDeInput](input)
    }
}

const validadores = {
    dataNascimento: input => validaDataNascimento(input)
}

function validaDataNascimento(input) {
    const dataRecebida = new Date(input.value)
    let mensagem = ''

    if (!maiorQue18(dataRecebida)){
        mensagem = 'Você deve ser maior que 18 anos para se cadastrar.'
    }

    input.setCustomValidity(mensagem)
}

function maiorQue18(data) {
    const dataAtual = new Date() // não inserindo nenhum valor o retorno será a data de hoje
    const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate)

    return dataMais18 <= dataAtual
}
import { valida } from "./validacao.js";

const inputs = document.querySelectorAll('input')

inputs.forEach(input => {
    input.addEventListener('blur', (evento) => {
        valida(evento.target)
    })
})
2 respostas

Fala Giulia, tudo bem? Espero que sim!

No console do navegador, retorna algum erro? Poderia dar mais detalhes sobre a sua súvida por favor?

Aguardo o retorno!

solução!

Oi Mateus,

no final de tudo acabei descobrindo que foram esses parênteses const dataMais18 = new Date(data.getUTCFullYear() + 18, data.getUTCMonth(), data.getUTCDate) que eu não tinha fechado.

Obrigada pelo retorno