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

Qual a melhor maneira de validar um formulário?

No curso o instrutor explica como validar um formulário de forma que os dados se persistam em uma tabela, após o usuário clicar no botão de adicionar, caso o mesmo insira dados inválidos ou nenhum dado nos campos, é lhe mostrado uma mensagem de erro, porém o navegador não recarrega pois retardamos a ação do navegador com a função event.preventDefault() e passando event como parâmetro para a função anônima que está atrelada ao evento de click.

Eu gostaria de saber como validar um formulário sem ter que retardar a ação do navegador, e que ao inserir dados inválidos, os dados setados nos campos não sejam enviados após a exibição de uma mensagem de erro e sim permaneçam até o usuário setar as informações corretas. Qual seria uma solução para esse caso?

5 respostas
solução!

Boa noite, Rene! Como vai?

Se vc não fizer o event.preventDefault() os dados serão enviados ao endereço definido no atributo action da tag form e, nesse caso, vc não terá mais controle sobre os dados com o Javascript, daí, nesse estágio, a validação fica a cargo do back-end.

Ou seja, se vc quer validar os dados no front-end, terá obrigatoriamente que usar o event.preventDefault().

Grande abraço e bons estudos!

Opa, Grabriel! Muito Obrigado pela explicação! Porém ainda tenho um dúvida em relação ao If, tenho que colocar o event.preventDefault dentro dele ?

Vamos supor que eu tenha um formulário com um campo nome e um de idade e quero valida lo e exibir uma mensagem de erro, o event vai dentro do If assim como coloquei ou não ?

insira seu código aqui

<script>
 var botao = buscaSeletor(".botao");
botao.addEventListener("click", function(event){

If(form.nome.value.length == 0){
      event.preventDefault();
      alert("Preencha o campo nome");
    }
 If(forma.idade.value.length == 0{
      evento.preventDefault();
     alert("Preencha o campo idade");
}

});

function buscaSeletor (classe){
   document.querySelector(classe);
}
</script>

Por nada, Rene!

Caso vc queira permitir o envio dos dados caso eles estejam corretos, então o event.preventDefault() deve ficar apenas dentro do if que valida os dados e que acusa caso tenha algum problema.

Ah sim Gabriel, muito obrigado pela atenção! E sanou minhas dúvidas em relação a esse caso.

Abraço! :D

Por nada, Rene!

Dica: Em vez de colocar vários if's dentro do seu eventListener, dê preferência por criar uma função que recebe os dados do formulário como parâmetro e que internamente execute a lógica de validação. Dessa forma o seu código ficará mais legível e facilitará a manutenção.

Grande abraço e bons estudos!