Jump to content
luigiferrari

Desativar botão até todos os campos estarem preenchidos

Recommended Posts

Criei um Form para fazer Cadastro, sempre que o usuário clica no botão para cadastrar é enviado um e-mail para o ADM.

O meu problema é o seguinte, quando tem algum campo não preenchido e o usuário clica em cadastrar, o email é enviado e só depois o alert do campo obrigatório aparece.

Gostaria de um JS que desativa o botão cadastrar até todos os campos estarem preenchidos corretamente.

E também que quando a pessoa clicasse no Botão cadastrar, ele iria desativar novamente, para evitar o usuário de clicar mais de uma vez e acabar enviando mais emails...

 

Segue o meu form...

Citar

 <form id="novo_evento" action="cadastrar(logado).php" method="get" class="padding-center" style="top: 0;">

Citar


                     <div class="form-group col-md-6">
                <label for="txtData">Data:</label>
                <input type="date" class="form-control" id="txtHorario_saida" name="Start">
            </div>
            

              <div class="form-group col-md-6">
                <label for="txtHorariosaida">Horario de Saida:</label>
                <input type="time" class="form-control" id="txtHorario_saida" placeholder="--:--" name="horario_saida">
            </div>

              <div class="form-group col-md-6">
                <label for="txtRetorno">Horario de Retorno:</label>
                <input type="time" class="form-control" id="txtHorario_retorno" placeholder="--:--" name="horario_retorno">
            </div>

  
          <div class="form-group col-md-6">
                <label for="txtLocal">Local de Destino:</label>
                <input type="text" class="form-control" id="txtLocal" name="Title">
            </div>
            <div class="form-group col-md-6">
            <label for="txtQtdpessoa">Quantidade de pessoas que vão no Carro:</label>
            <input type="text" class="form-control" id="txtQtdpessoa" name="qtdpessoa">
           
             

        </div>

             <div class="form-group col-md-6">
                
                <input type="hidden" class="form-control" id="txtmotorista" name="motorista" value="A_definir">
            </div>
            <div class="form-group col-md-6">
                
                <input type="hidden" class="form-control" id="txtTotal_lugares" name="total_lugares" value="34" >
            </div>


<div class="form-group col-md-10"></div>

        <div class="form-row">
            <div class="col">
                <button type="submit" class="btn btn-primary col-md-12"  name="salvar">Agendar</button>
            </div>

        </div>
    </div>
    </form>

 

Share this post


Link to post
Share on other sites

você pode fazer a validação no arquivo php. seria bem simples.

Até pq é ir em inspecionar elemento e burlar esta validação em JS.
Mas você pode criar uma função no JS que faça isso. use Jquery, é uma mão na roda:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
 function validation(){
   if($("#ID_INPUT").val() == "" || $("#ID_INPUT").val() == "" || $("#ID_INPUT").val() == "" || $("#ID_INPUT").val() == ""){
    	// campos vazios
      $("#ID_BOTAO").prop("disabled", true);
    }else{
    	$("#ID_BOTAO").prop("disabled", false);
    }
 
 }

Agora é so chamar a função toda vez que o usuário estiver digitando em alguma input:

 $("#ID_INPUT").keyup(validation());

 

Share this post


Link to post
Share on other sites
Em 19/05/2019 at 13:09, luannsr12 disse:

Agora é so chamar a função toda vez que o usuário estiver digitando em alguma input:


 $("#ID_INPUT").keyup(validation());

 

 

Só um detalhe, você está executando o validation no momento da atribuição da mesma, assim ele não vai validar a cada keyup e sim apenas quando o script chegar nesta linha.

 

A correção seria...

 

 $("#ID_INPUT").keyup(validation);

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By asacap1000
      Galera me ajudem por favor, estou pirando kkkkk
       
      Seguinte, tenho um form que realiza o submit via javascrit enviando os dados para uma página php formatada em json.
      Está gravando perfeitamente porém preciso dos dados do retorno, como Link do boleto, e alguns outros resultados para inserir no banco nesse ponto já pesquisei um monte testei de tudo até a página bugar e nada kkkk
       
      o Script que utilizo para o envio é esse:
       
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $("#frmBoleto").submit(function(){ $.ajax({ type: "POST", url: "https://www.sitedaloja.com.br/action/boleto_bradesco/gerando_boleto.php", data: $(this).serializeArray(), }).done(function( msg ) { }); return false; }); </script> Como fazer para capturar os dados  da resposta do json?  
    • By Sapinn
      Salve salve! Nuca intendi como isso realmente funciona por isso gostaria da ajuda de vcs. Estou desenvolvendo um sistema de historias e acho que seria interessante no envio dessas historia além dos texto imagem ilustrativas, mais ou menos como blogs de noticias fazem, mas como posso enviar texto e imagem e depois retorna-los juntos? Eu sei com enviar imagens em php mas gostaria de enviar a imagem e o texto colocando ambos em um textarea acho que assim ficaria bem mais interessante alguém pode me ajuda?
       
    • By clickanapolis
      Boa tarde pessoal, desculpa se postei em lugar errado, mais não sei aonde postar essa minha dúvida. Estou finalizando um projeto que consiste em uma plataforma de processo seletivo e na etapa final os candidatos iram fazer uma prova online.
       
      O cliente me perguntou se é possível bloquear o navegador, tipo se ele sair do navegador ou mudar de aba tipo o sistema finalizar a prova do candidato, visto que o sistema irá identificar que ele foi fazer uma pesquisa.
       
      Eu particularmente não vi nada igual ate hj e não sei se existe algo seja em javascript ou qualquer outro modo de fazer isso.
    • By FilipeON
      Olá Sou iniciante em Javascript... Preciso de ajuda para a seguinte questão:
      Tenho duas FUNÇÕES e preciso executa-las de forma aleatória, já tentei de varias formas, mas sem sucesso, alguém pode me ajudar?
      Basicamente o que preciso é que toda vez que a pagina WEB for carregada uma das duas funções seja sorteada e executada.
       
      As funções são:
      function vt1(){fireEvent (document.getElementById('bt-1'), 'click');} function vt2(){fireEvent (document.getElementById('bt-2'), 'click');}
       
    • By Danilo - Jesus voltará!
      Olá, estou fazendo um cálculo de horas para cartão ponto em php e jquery... o cálculo do php já consegui um satisfatório. Preciso agora ao preencher os campos que são gerados dinamicamente de 1 a 31 que são os dias do mês, ao sair do campo Jornada (horas de trabalho), ele envie via ajax os valores preenchidos nesses 4 campos anteriores que são 4 inputs de tempo (time).
      Eu consegui recuperar individualmente, mas ele passa a chamada da função em todos, se dou um alert por exemplo ele percorre todos os campos dinâmicos para aí ir para o outro input, que no caso acontece a mesma coisa, segue o script que utilizei para pegar o valor do input individual, aí preciso que não percorra todos e pegue apenas o valor de cada um no onblur do campo jornada conforme está na figura e me retorne para os campos específicos com os dados que pegarei no php,. Espero ter sido claro, se alguém puder ajudar eu agradeço.
       
      $(document).ready(function() { $(":input").blur(function() { var id = $(this).attr('id'); var value = $(this).val(); alert(id + " " + " " + value); }); }); O que preciso está na figura abaixo:
       

       
      Aguardo, se alguém puder ajudar...agradeço
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.