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

Função não valida o Paciente ao inserir no Form

Boa tarde,

Ao tentar validar um paciente pelo form, através de uma function, a mesma retorna true independente de ter sido inserido um valor absurdo.

Segue o código abaixo para análise:


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

botaoAdicionar.addEventListener("click", function(event){
    event.preventDefault();
    //Cria objeto form com o formulario do html
    var form = document.querySelector("#form-adiciona");
    //Extraindo informações do paciente do form
    var paciente = obtemPacienteDoFormulario(form);
    //Cria a tr e td do paciente
    var pacienteTr = montaTr(paciente);


    if(!validaPaciente(paciente)){
        console.log("Paciente Inválido");
        return;
    }

    //Cria objeto tabela        
    var tabela = document.querySelector("#tabela-pacientes");
    //Coloca a tr paciente como filha da tabela
    tabela.appendChild(pacienteTr);

    form.reset();
});


function obtemPacienteDoFormulario(form){
    var paciente = {
        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 paciente;
}

function montaTr(paciente){
    //Cria o objeto pacienteTr que cria um novo elemento tr no html
    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");
    pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));
    return pacienteTr;
}

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

function validaPaciente(paciente){
    if(validaPeso(paciente.peso)){
        console.log("retornou TRUE em validaPaciente    ");
        return true;
    }else{
        console.log("retornou FALSE em validaPaciente");
        return false;
    }

}
3 respostas

Filipe, como é o código da sua função validaPeso()?

Opa, segue:

function validaPeso(){
    if(peso >= 0 && peso < 1000){
        return true;
    }else{
        return false;
    }
}
solução!

Sua funcão validaPeso não está recebendo o parametro peso.

Espero ter ajudado :)