Neste artigo você aprenderá a resetar formulário após envio no HTMX, ou seja, ativar a limpeza do formulário depois de um request

Fala programador(a), beleza? Bora aprender mais sobre HTMX!
Antes de seguir com o artigo, não deixe de conferir nosso curso completo de HTMX!

Muitas vezes as aplicações exigem que os formulários sejam resetados após o envio, garantindo uma experiência de usuário limpa e eficiente.
Este artigo explora técnicas eficazes para resetar formulários automaticamente em aplicações web utilizando HTMX!
Solução com HTMX: Utilizando Eventos Customizados
Abordagem Declarativa com HTMX
HTMX oferece uma solução interessante para este problema, permitindo a execução de ações específicas após eventos de solicitação, como o reset do formulário.
A técnica envolve o uso do atributo hx-on::after-request diretamente no elemento do formulário, que escuta o evento after-request e executa uma ação baseada no resultado da solicitação.
<form id="form-mensagem" class="form-mensagem" hx-post="/caminho/para/envio" hx-on::after-request="if(event.detail.successful) this.reset()">
<!-- Campos do formulário aqui -->
<button class="btn-enviar" type="submit">Enviar</button>
</form>
Esta solução assegura que o formulário seja resetado apenas após uma solicitação bem-sucedida, evitando o reset prematuro ou em casos de erro na solicitação.
Extensão Customizada HTMX para Reset de Formulário
Para aqueles que procuram uma solução mais generalizada e reutilizável, uma extensão HTMX customizada pode ser a chave.
Este método envolve a criação de uma extensão que escuta o evento htmx:beforeSwap e, se a solicitação for bem-sucedida sem erros, realiza o reset do formulário ou do elemento de entrada específico que desencadeou a solicitação.
htmx.defineExtension('reset-apos-sucesso', {
onEvent: function(nomeEvento, evento) {
if (nomeEvento !== 'htmx:beforeSwap') return;
if (evento.detail.isError) return;
const elementoGatilho = evento.detail.requestConfig.elt;
if (elementoGatilho.matches('[hx-reset-apos-sucesso]')) {
switch (elementoGatilho.tagName) {
case 'FORM':
elementoGatilho.reset();
break;
// Adicione mais casos conforme necessário
}
}
}
});
Para utilizar esta extensão, simplesmente adicione o atributo hx-reset-apos-sucesso ao formulário desejado, garantindo que a extensão esteja carregada no documento:
<body hx-ext="reset-apos-sucesso">
<form hx-post="/enviar-mensagem" hx-target="#mensagens" hx-swap="afterbegin" hx-reset-apos-sucesso>
<!-- Campos do formulário aqui -->
</form>
</body>
Conclusão
Chegamos ao fim do artigo que explica como resetar formulário após envio no HTMX!
Utilizando as capacidades de eventos customizados do HTMX, podemos aprimorar significativamente a experiência do usuário em suas aplicações, especialmente em funcionalidades de mensagens em tempo real.
Seja através do uso direto de atributos HTMX no formulário ou da implementação de extensões customizadas, é possível garantir que os formulários sejam resetados de forma eficaz após o envio, mantendo a interface do usuário limpa e pronta para novas interações.