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

[Dúvida] Criação do Form

Pesquisei em alguns sites e vi alguns vídeos até finalmente achar um que me guiasse ao que tinha em mente, olhei cada trecho em si na hora de criar e agora estou tendo dificuldades em obter a confirmação, ele não dá erro em si, apenas fica carregando infinitamente não sei dizer sé e algum problema com o servidor, com a minha internet ou o código em si.

agradeço de antemão e qualquer sugestão.

Código Html :

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formulario da Alura</title>
    <link rel="stylesheet" href="style.css">
    <script defer src = "script.js"></script>
</head>
<body>
    <form id="form" 
    action="https://formsubmit.co/kmg.macedo2305@gmail.com" method="POST"
    data-form>
    

        <label for="nome">Nome</label>
        <input type="text" name="nome" id="nome" required>

        <label for="telefone">Celular</label>
        <input type="tel" name="Celular" id="fone" placeholder="(xx) xxxx-xxxx" required>

        <label for="email">E-mail</label>
        <input type="email" name="email" id="email" required>

        <label for=""mensagem>Mensagem</label>

        <textarea name="mensagem" id="mensagem" required></textarea>
        <button type="submit" data-button ;>Enviar</button>
    </form>
</body>
</html>

Codigo em JavaScript :

class FormSubit {
    constructor (settings) {
        this.settings = settings;
        this.form = document.querySelector(settings.form);
        this.formButton = document.querySelector(settings.button);
        
        if (this.form) {
            this.url = this.form.getAttribute("action");
        }
    }

    displaySucess() {
        this.form.innerHTML = this.settings.sucess;
    }

    displayError() {
        this.form.innerHTML = this.settings.error;
    }

    init() {
        if(this.form) this.formButton.addEventListener("click", () => this.displaySucess());
        return this;
    }
}

const formSubmit = new FormSubmit({
    form: "[data-form]" ,
    button: "[data-buttton]",
    sucess: "<h1 class = 'sucess' >Mensagem enviada!! </h1>",
    error: "<h1 class = 'error' >Não foi possível enviar sua mensagem.</h1>",
}) 
formSubmit.init();
2 respostas
solução!

Oi, Kawã! Tudo bem?

Podemos inicialmente notar um pequeno erro de digitação no código HTML, na linha onde definimos a label para a mensagem, em que está faltando um aspas duplas após o "for". Dessa forma, devemos deixar o nosso trecho de código da seguinte maneira:

<label for="mensagem">Mensagem</label>

Após isso, no código JavaScript, temos um erro de digitação no nome do atributo do botão, onde escrevemos "[data-buttton]", ao invés de "data-button". Portanto, a linha correta seria:

button: "[data-button]",

Além disso, no código JavaScript, estamos adicionando um evento de clique ao botão de envio do formulário, o que pode estar causando a página a recarregar antes do formulário ser enviado, resultando no carregamento infinito. Uma maneira de resolver isso seria adicionar um evento de 'submit' ao formulário em vez de um evento de 'click' ao botão, o que garantiria que o formulário seja enviado antes da página ser recarregada, o que podemos fazer da seguinte forma:

init() {
    if(this.form) this.form.addEventListener("submit", (event) => {
        event.preventDefault();
        this.displaySucess();
    });
    return this;
}

Neste código, event.preventDefault() é usado para prevenir o comportamento padrão do evento de 'submit', que é recarregar a página.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Obrigado pela correção, a respeito do carregamento infinito kk eu tinha que dar a confirmação pelo meu E-mail para poder obter o formulario, após aceitar a pagina parou de carregar infinitamente kkk