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

Verificar duplicata ao buscar paciente com AJAX

Eu gostaria de verificar se o paciente já existe na tabela antes de adicionar ou buscar com AJAX.

Fiquei um tempo sem mexer com JavaScript e agora estou voltando, então tem algumas coisas que não lembro. Fiz meu código assim:

function adicionaPacienteNaTabela(paciente) {
    var pacienteTr = montaTr(paciente);
    var tabela = document.querySelector("#tabela-pacientes");
    var itenstabela = document.querySelectorAll(".paciente");
    var x = 0;
    for (var i = 0; i < itenstabela.length; i++) { //compara se tem paciente repetido
        var item = itenstabela[i];
        var pesquisa = item.textContent;
        if (pacienteTr.textContent == pesquisa) {
            x = 1;
            console.log("Paciente já cadastrado");
        };
    };
    if (x == 0){
        tabela.appendChild(pacienteTr);
    }
}

(Esse trecho foi o único que alterei, o Html e as outras funções estão iguais as da aula)

Desse jeito ele não adiciona duas vezes os pacientes, mas ele não consegue comparar com os pacientes que já estão na tabela. Como faço para ele comparar tudo?

5 respostas

Fala ai Karen, tudo bem? Na verdade ele vai comparar com os pacientes ja tabela sim, isso porque você busca a tabela atual #tabela-pacientes e depois percorre todo .paciente dela.

Espero ter ajudado.

Percorre tudo sim, mas está dando divergência na hora de transformar para texto.. acrescentei um

        console.log(pesquisa);
        console.log(pacienteTr);
        console.log(pacienteTr.textContent);

E mostra isso:

form.js:29 
                        Paulo
                        100
                        2.00
                        10
                        25.00
form.js:30
    <tr class="paciente">
        <td class="info-nome">Jéssica</td>
        <td class="info-peso">47</td>
        <td class="info-altura">1.54</td>
        <td class="info-gordura">17</td>
        <td class="info-imc">19.82</td>
    </tr>
form.js:31
    Jéssica471.541719.82

Ou seja, quando transforma em texto ele assume um formato diferente e não consegue comparar com os valores que já estavam na tabela.

solução!

Fala Karen, boa, nem tinha reparado nisso.

Você precisa comparar com apenas uma coluna ou mais de uma coluna de forma separada, por exemplo:

pacienteTr.textContent.querySelector('.nome').textContent === pesquisa

Nesse exemplo dentro da linha do paciente a gente está buscando uma td que tenha a classe nome e comparando se o nome dela já está inserido ou não.

Você pode fazer isso para mais informações e identificadores do paciente.

Espero ter ajudado.

Obrigada professor, agora funcionou certinho. Ficou assim:

function adicionaPacienteNaTabela(paciente) {
    var pacienteTr = montaTr(paciente);
    var tabela = document.querySelector("#tabela-pacientes");
    var itenstabela = document.querySelectorAll(".info-nome");
    var x = 0;
    for (var i = 0; i < itenstabela.length; i++) { //compara se tem paciente repetido
        var item = itenstabela[i];
        var pesquisa = item.textContent;
        if (pacienteTr.querySelector('.info-nome').textContent === pesquisa) {
            x = 1;
            console.log("Paciente já cadastrado");
        };
    };
    if (x == 0){
        tabela.appendChild(pacienteTr);
    };
};

Boa Karen, é isso ai mesmo, ficou muito bom.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.