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

event.preventDefault() parou de funcionar em formularios?

Tentei de varias formas aplicar o event.preventDefault() em um formulario e não está funcionando. Minha ultima tentativa foi com base numa solução que vi, com solução dada em 2017, que consistia em criar um onsubmit num formulario .

<form class="form" onsubmit="produto.salvar(event)">

E dai dentro um objeto coloquei o seguinte:

salvar(event) {
    event.preventDefault();
    let produto = this.lerDados();
    if (this.validaCampos(produto)) {
      if (this.editId == null) {
        this.adicionar(produto);
      } else {
        this.atualizar(this.editId, produto);
      }
    }

Ah pouco depois de adicionar o "event" no js, o vs code sozinho criou essa estrutura:

const { event } = require("jquery");
2 respostas
solução!

Oi Gabriel!

Hoje em dia uma das maneiras mais comuns é associar alguma função ao evento submit do form. Seu código ficaria mais ou menos assim:

<!-- remover o onsubmit -->
<form class="form">

// ... restante
salvar(event) {
    event.preventDefault();
    let produto = this.lerDados();
    if (this.validaCampos(produto)) {
      if (this.editId == null) {
        this.adicionar(produto);
      } else {
        this.atualizar(this.editId, produto);
      }
    }

// selecionar o form
const form = document.querySelector(".form");  
// associar o salvar com o evento de submit    
form.addEventListener("submit", salvar);

Se tiver dúvidas de como fazer isso no seu código, mande aqui o código JS completo e também a parte do HTML onde os scrips estão sendo importados.

Em relação à linha do VSCode que importa algo do jQuery, creio que ela pode ser deletada sem problemas.

Espero ter ajudado! Se tiver mais alguma dúvida pode postar aqui!

Funcionou numa pagina de testes, mas num template que estou usando não está funcionando....