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

Valor inválido e valor não pode estar em branco aparecem ambos.

Olá, Na aula foi mostrado que se o input estivesse vazio a mensagem de erro seria "o input não pode estar em branco" se o input estivesse com valor errado (peso ou altura) o erro seria Input inválido no entanto quando o input fica vazio aparece as duas mensagens.

var botao = document.querySelector("#adicionar-paciente");

botao.addEventListener("click", function(){
    event.preventDefault();

var form = document.querySelector("#formulario");

var pacientenew = pacientenovo(form)

var tabelanova = criaTable(pacientenew)

var validar = validapaciente(pacientenew);

if (validar.length > 0) {
    exibemensagem(validar)
    return;
}

var tabela= document.querySelector("#tabela-pacientes");
tabela.appendChild(tabelanova);

form.reset();

})


function pacientenovo(form){

var novopaciente = {
nome:form.nome.value,
peso:form.peso.value,
altura:form.altura.value,
gordura:form.gordura.value,
imc:calculaImc(form.peso.value,form.altura.value)    
}
return novopaciente 
}


function criaTable(pacientenew){

var tr = document.createElement("tr");
tr.classList.add("paciente")

var tdnome=montaTd(pacientenew.nome,"info-nome")
var tdpeso=montaTd(pacientenew.peso,"info-peso")
var tdaltura=montaTd(pacientenew.altura,"info-altura")
var tdgordura=montaTd(pacientenew.gordura,"info-gordura")
var tdimc=montaTd(pacientenew.imc,"info-imc")

tr.appendChild(tdnome);
tr.appendChild(tdpeso);
tr.appendChild(tdaltura);
tr.appendChild(tdgordura);
tr.appendChild(tdimc);

tdpeso.textContent=pacientenew.peso;
tdaltura.textContent=pacientenew.altura;
tdgordura.textContent=pacientenew.gordura;
tdimc.textContent=pacientenew.imc;

return tr
}


function montaTd(dado,classe){
var td = document.createElement("td");
td.classList.add(classe)
td.textContent=dado;

return td
}

function validapaciente(pacientenew){

var erros = [];

if (pacientenew.nome.length==0) {erros.push("Nome não pode estar vazio!!!");}

if (!pesoValido(pacientenew.peso)) {erros.push("Peso inválido");}

if (!alturaValida(pacientenew.altura)) {erros.push("Altura inválida");}

if (pacientenew.altura.length==0) {erros.push("Altura não pode estar vazia!!!");}

if (pacientenew.gordura.length==0) {erros.push("Gordura não pode estar vazia!!!");}



return erros
}    

function exibemensagem(validar){
 var ul = document.querySelector("#erro");

     validar.forEach(function(erro){ 

         var li = document.createElement("li");
         li.textContent = erro;
         ul.appendChild(li);

     });

} 
2 respostas

Fala ai Lucas, tudo bem? Olhando os códigos parecem estar corretos, você está realizando várias validações onde uma não depende da outra.

Não vejo problemas nisso, pois, caso você não tenha inserido nome, tenha peso e altura inválida, ele vai mostrar três mensagens de erro, uma para o nome, outra para a altura e por uma ultima para o peso.

Espero ter ajudado.

solução!

Fala ai Lucas, tudo bem? Olhando os códigos parecem estar corretos, você está realizando várias validações onde uma não depende da outra.

Não vejo problemas nisso, pois, caso você não tenha inserido nome, tenha peso e altura inválida, ele vai mostrar três mensagens de erro, uma para o nome, outra para a altura e por uma ultima para o peso.

Espero ter ajudado.