SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
26.12.2024

JavaScript: Confirmando ou Cancelando o Envio de Formulários

Resposta Rápida

Para solicitar confirmação antes de enviar um formulário, adicione um manipulador de eventos ao evento onsubmit e utilize o diálogo confirm:

document.querySelector('form').onsubmit = function() {
  return confirm('Você realmente deseja enviar o formulário?');
};

O formulário só será enviado se o usuário clicar em OK. Caso contrário, o envio será cancelado. Não se esqueça de substituir 'form' pelo seletor apropriado.

Validação do Lado do Cliente: Prevenindo Erros

Utilize validação de dados do lado do cliente para gerenciar o processo de envio do formulário e evitar ações desnecessárias. Isso proporcionará feedback instantâneo ao usuário e reduzirá o número de envios incorretos.

function validateForm() {
  // Lógica de validação aqui...
  // Se forem encontrados erros...
  if (!isValid) {
    alert('Erros encontrados no formulário.');
    return false;
  }
  // Se tudo estiver ok, exibe um diálogo de confirmação
  return confirm('Você está pronto para enviar o formulário?');
}

document.querySelector('form').onsubmit = validateForm;

A função validateForm valida os dados e informa o usuário sobre os resultados, enquanto o confirm só é chamado após uma validação bem-sucedida.

Separação de Responsabilidades: Validação e Confirmação

Utilizar funções separadas para validação e confirmação torna o código mais claro e mais fácil de manter:

function hasValidationErrors(form) {
  // Validar dados...
  // ...
  return false; // Retornar true se houver erros
}

function confirmSubmission() {
  // Pergunte a questão crítica!
  return confirm('Você tem certeza de que deseja enviar o formulário?');
}

document.querySelector('form').onsubmit = function(event) {
  // Se forem encontrados erros, informe o usuário...
  if (hasValidationErrors(this)) {
    alert('Por favor, corrija os erros no formulário.');
    event.preventDefault();
  }
  // Se o usuário recusar o envio...
  else if (!confirmSubmission()) {
    event.preventDefault();
  }
};

Essa estrutura melhora a legibilidade e escalabilidade do código.

Personalizando o Diálogo: Adicionando Exclusividade

Você pode personalizar a confirmação de envio do formulário para torná-la contextualmente relevante:

function confirmOrderSubmission() {
  // Incentive a revisão do pedido!
  return confirm('Você está pronto para confirmar seu pedido?');
}

Gerenciando o Envio de Formulários: Controle Total Sobre os Eventos

Às vezes, é necessário ter controle total sobre o envio do formulário, especialmente após confirmar ações do usuário.

function submitForm(form) {
  // Enviar dados para o servidor!
  if (confirmOrderSubmission()) {
    form.submit();  // Use this.form.submit() no contexto do manipulador
  }
}

document.querySelector('form').addEventListener('submit', function(event) {
  event.preventDefault();  // Mudança de planos: cancelar o envio padrão
  submitForm(this);        // Prosseguir para o método de envio personalizado
});

Aumentando a Interatividade: Usando Elementos de Entrada do Tipo image

Adicionar elementos de entrada do tipo image pode melhorar significativamente a interface e simplificar a interação do usuário com o formulário:

<input type="image" src="submit-button.png" onclick="return validateForm();" />

Esses elementos melhoram a percepção visual do formulário enquanto mantêm sua funcionalidade.

Garantindo uma Experiência de Usuário Confiável: Testes e Otimização

Realize testes regularmente e melhore os mecanismos de validação e reconhecimento de envio para garantir interações confiáveis do usuário com seus formulários.

Visualização

// Visualize isso como uma tira de quadrinhos:

Painel 1: Usuário preenche o formulário 🖋️  
Painel 2: Clica no botão "Enviar" 🎯  
Painel 3: Um diálogo de confirmação aparece 🛑✨  
Painel 4: Escolha do usuário:  
         - [Sim] - Dados enviados para o servidor 🚀  
         - [Não] - Retornar para corrigir o formulário 🔄  

O diálogo oferece aos usuários uma escolha: enviar os dados de forma ousada ou retornar para refinar as informações.

Recursos Úteis

  1. Window.confirm() - MDN Web Docs — Usando diálogos de confirmação em JavaScript.
  2. Caixas de Popup JavaScript - w3schools — Visão geral dos tipos de popup em JavaScript, incluindo caixas de confirmação.
  3. Async/await - JavaScript.info — Noções básicas de programação assíncrona em JavaScript.
  4. HTMLFormElement: evento submit - MDN Web Docs — Trabalhando com eventos de formulário em JavaScript.
  5. Event.preventDefault() - MDN Web Docs — Como prevenir o envio padrão do formulário.
  6. FormData - MDN Web Docs — Trabalhando com dados de formulário em JavaScript.

Video

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

Thank you for voting!