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

Qual método faz com que o formulário não envie se caso não digitar nada ?

Olá, pessoal

No curso JS na Web: Manipule o DOM com JavaScript, qual método faz com que o formulário não envie se caso não digitar nada, ou a tecla espaço uma ou mais vezes?

Sei que existe tipo de formulário em que ele vai espera um valor compatível com o seu tipo, exemplo, email, telefone, numero. Existe um método ou tipo no próprio formulário do html pra evitar que envie se caso não digitar nada ou só espaços sem em branco ?

Sei que não é finalidade do curso usabilidade, mas fiquei com vontade de saber disso.

3 respostas
solução!

Fala Davilson, tudo bem?

Existe sim! No próprio html, você pode utilizar o required nos campos que você deseja que sejam obrigatoriamente preenchidos, veja um exemplo:

<form action="">
  <input type="text" required>
  <button>Enviar</button>
</form>

Como o input acima está com o required, caso eu clique no botão de enviar, aparecerá para o usuário um aviso de que ele precisa preencher o campo, veja:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero ter ajudado, bons estudos :D

Boa tarde,

Sei que está marcada como solucionado, mas para mim não havia funcionado. Então fiz de outro modo.

eu tentei apenas colocando o required no campo de input no HTML e não funcionou. Me questionei o que poderia estar acontecendo e imaginei que fosse por causa da JavaScript, e eu estava certo kkkkkk

Deixo abaixo o que fiz para solucionar esse erro dando um alert para o usuário, mas claro que pode ser outra maneira sem ser um alert.

No arquivo de main.js eu coloquei um if na const criarTarefa, segue abaixo apenas o if e o const completo:

if(valor ==""){
        alert("Preencha o campo tarefa");
        return criarTarefa;
 }else{
      lista.appendChild(tarefa);
 }

//abaixo o const criarTarefa completo:

const criarTarefa = function(evento){
        evento.preventDefault();
        const lista = document.querySelector('[data-list]');
        const input = document.querySelector('[data-form-input]');
        const valor = input.value;
           const tarefa = document.createElement('li');
        tarefa.classList.add('task');
        const conteudo = `<p class="content">${valor}</p>`;

   tarefa.innerHTML = conteudo;

   tarefa.appendChild(BotaoConclui());
   tarefa.appendChild(BotaoDeleta());

   input.value = "";

   if(valor ==""){
      alert("Preencha o campo tarefa");
            return criarTarefa;
   }else{
      lista.appendChild(tarefa);
   }
}

Oi Lucas Virolli Dal Bello, Obrigado pela revisão.

Eu cheguei na mesa conclusão, eu tinha feito o teste apenas no HTML com required e tinha ficado satisfeito.

Mas quando fui para o código da aula que continha o Js, não funcionou mesmo. No meu teste do porque não funcionou, foi o preventDefault();, que é fundamental para a proposta da aula que era para a página não recarregar, mas que também remove o required.

Vou testar a sua solução. Compartilho aqui também a função em questão com a minha "solução" em js com if`.

const criarTarefa = (evento)=> {
        evento.preventDefault();

        const input = document.querySelector('[data-form-input]');
        const valor = input.value;
        if (valor != "" && valor != " " && valor != "  ") { // cmt 02
            const lista = document.querySelector('[data-list]');

            const tarefa = document.createElement('li');
            tarefa.classList.add('task');
            const conteudo = `<p class="content">${valor}</p>`;

            tarefa.innerHTML = conteudo;
            tarefa.appendChild(BotaoConcluir());
            tarefa.appendChild(BotaoDeleta());
            lista.appendChild(tarefa);

            input.value = "";
        } else {
            input.value = "";
            alert("Digite a tarefa"); 
        }
    } 

Adicionei no if caso o input seja alguns espaços em branco, mas acretido ter uma forma melhor de limpar esses campos.