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)
})
})