SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
26.12.2024

JavaScript: Como Interceptar e Gerenciar o Envio de Formulários

Resposta Rápida

Uma solução simples e eficaz para interceptar o evento submit do seu formulário é adicionar um manipulador de evento usando o método addEventListener e chamar preventDefault() para cancelar o comportamento padrão.

document.querySelector('form').addEventListener('submit', event => {
    event.preventDefault();  // Espera aí! Impedindo a ação padrão.
});

Dessa forma, você bloqueia o comportamento padrão do formulário, permitindo que você implemente sua lógica — por exemplo, enviando dados via AJAX.

Explicação Detalhada e Tratamento de Vários Casos

Aplicando Interceptação de Formulário em Diferentes Navegadores

Em um mundo digital diverso, os navegadores se comportam de maneiras diferentes. Você precisa garantir a compatibilidade do seu código em todos os navegadores:

var form = document.getElementById('meuFormulario');

function handleForm(event) {
    event.preventDefault(); // Calma lá, você ainda não enviou.
    // Seu código adicional aqui
}

if (form.attachEvent) {
    form.attachEvent('submit', handleForm);  // A vida em navegadores mais antigos pode trazer surpresas
} else {
    form.addEventListener('submit', handleForm);  // Isso é para navegadores modernos!
}

Esse código garante compatibilidade usando attachEvent para versões mais antigas de navegadores que não suportam addEventListener.

Tratando a Pressão da Tecla Enter

Os usuários costumam usar a tecla Enter para enviar formulários. Veja como você pode gerenciar esse comportamento:

form.addEventListener('keypress', function(event) {
    if (event.keyCode === 13 || event.which === 13) {
        event.preventDefault();  // Calma lá, Enter.
        // Aqui está seu código relacionado ao envio
    }
});

Com esse código, você controla o processo de envio do formulário acionado pela tecla Enter, dando ao seu código a chance de realizar as ações necessárias.

Aumentando a Segurança Durante o Envio do Formulário

A segurança é uma prioridade. Você pode fortalecer a segurança do envio de dados usando campos ocultos como tokens CSRF:

function addCSRFToken() {
    var hiddenField = document.createElement('input');
    hiddenField.type = 'hidden';
    hiddenField.name = 'csrf_token';
    hiddenField.value = 'seu_token_secreto';
    document.getElementById('formularioSeguro').appendChild(hiddenField);
}

window.addEventListener('DOMContentLoaded', (event) => {
    addCSRFToken();  // Agora o formulário está seguro!
});

Usar um token CSRF aumenta a segurança do formulário ao implementar um campo oculto que é definido antes de enviar os dados.

Visualização

Enviar um formulário é como enviar um trem em sua rota:

        [Enviar] -> 🚂 Trem

Quando o usuário clica no botão de enviar, o trem inicia sua jornada rumo à "terra dos servidores."

document.getElementById('formulario').addEventListener('submit', function(event) {
    event.preventDefault(); // Mudando o curso...
});

Usando event.preventDefault(), controlamos a rota do trem:

[Entrada do Usuário] -> [🚂 Trem para]

Agora o JavaScript decide quando e para onde o trem irá.

form.submit(); // Agora estamos prontos para enviar dados ao servidor!

Ideia Chave: O JavaScript te dá a capacidade de controlar o caminho do envio do formulário e gerenciar seu destino final.

Recursos Úteis

  1. Método Event: preventDefault() - Web API | MDN — Mais sobre como cancelar o comportamento padrão.
  2. Método HTMLFormElement: submit() - Web API | MDN — Explore as capacidades de envio programático de formulários.
  3. Validação de Formulários no Lado do Cliente - Aprendendo Desenvolvimento Web | MDN — Dominando a validação de formulários do lado do cliente.
  4. Formulários: evento e método submit — Aprenda a gerenciar eventos de envio de formulário em JavaScript.
  5. Evento de Envio | Documentação da API jQuery — Aprofunde-se em eventos de envio usando jQuery.
  6. Buscando Dados do Servidor - Aprendendo Desenvolvimento Web | MDN — Aprenda como buscar dados do servidor usando APIs web.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!