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

Resetar formulário após envio no HTMX capa

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!

curso completo 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.

Subscribe
Notify of
guest

0 Comentários
Inline Feedbacks
View all comments