3
respostas

Método preventDefault no evento submit não está funcionando.

Boa tarde,

Estou com o problema de carregamento da página após enviar o formulário mesmo usando o preventDefault.

Constatei que se eu retirar a parte do código que faz a requisição POST, o preventDefault funciona.

Alguma sugestão?

cadastro-clientes.html (fornecido pelo professor).

<form data-form>
    <div class="container">
      <div class="form-group">
        <label>CPF</label>
        <input
          type="number"
          class="form-control"
          data-cpf
          placeholder="Digite seu CPF aqui"
        />
      </div>
      <div class="form-group">
        <label>Nome</label>
        <input
          type="text"
          class="form-control"
          data-nome
          placeholder="Digite seu nome aqui"
        />
      </div>
      <button type="submit" class="btn btn-primary">Enviar</button>
    </div>
  </form>

Scripts utilizados

<script src="./api/client.js"></script>
    <script src="./clientForm.js"></script>

clientForm.js

const form = document.querySelector('[data-form]');

form.addEventListener('submit', (event) => {
  event.preventDefault();

  const cpf = event.target.querySelector('[data-cpf]');
  const nome = event.target.querySelector('[data-nome]');

  registerClient(cpf.value, nome.value);
});

client.js

const listClients = () => {
  return fetch('http://localhost:4000/clientes')
    .then((res) => {
      return res.json();
    })
    .then((json) => {
      return json;
    });
};

const registerClient = (cpf, nome) => {
  const json = JSON.stringify({
    cpf: cpf,
    nome: nome,
  });
  return fetch('http://localhost:4000/clientes/cliente', {
    method: 'POST',
    headers: {
      'Content-type': 'application/json',
    },
    body: json,
  }).then((res) => {
    return res.body;
  });
};

Att.

3 respostas

Fala ai Enkindu, tudo bem? Falando assim sem ver os códigos fica bem dificil te ajudar, consegue compartilhar o trecho do formulário e onde você ouve o evento de submit via JavaScript?

Fico no aguardo.

opa Enkindu! no caso, vc quer que seu form nao dê submit quando clicar em enviar?

Opa Thiago!

Exato, após enviar os dados para o servidor ele ainda faz o refresh. Eu li algumas coisas sobre a fetch API, mas nada conclusivo, aparentemente ela faz um reload na página. Bom trouxe essa dúvida aqui, pois nunca tinha me deparado com essa questão. Não tive tempo para investigar a fundo, mas agradeço se alguém tiver já passado e puder compartilhar o porquê de acontecer isso.