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 WagnerFilho
      Olá,
      Eu escrevi um exemplo de trabalho de um problema real que estou tentando resolver
      Criei um objeto simulando o retorno json que recebo do banco de dados.
       
      Eu preciso:
      Listar contratos e lotes de contratos Ao entrar na função, marcar o último `lote` do `contrato` como selecionado no Dropdown List Ao entrar na função, exibir as faturas `lote` e `contrato` selecionado no elemento `ul-invoices` Carregar e exibir as respectivas `faturas` ao alterar o `lote`  
      Problemas:
      Não consigo listar as `faturas` do último `lote` do `contrato selecionado` ao carregar a função. Não consigo listar as `faturas` ao `alterar` o `lote` do `contrato`  
      Observação:
      Ao entrar na página, já tenho as informações do contrato selecionado; no caso do exemplo, deixei o contrato com o ID 1. No exemplo estou usando a classe `in-attendance` para definir o contrato selecionado Estou usando `Revealing Pattern` e quero manter este padrão  
      Tradução
      contracts = contratos batches = lotes invoices = faturas  
      Exemplo
      <html> <label id="contracts"></label> <ul id="ul-invoices"></ul> <pre></pre> <script> let lblContract = document.querySelector('#contracts'); let UlInvoices = document.querySelector('#ul-invoices'); let contractInAttendance = 1; const objectContract = { id: 1, nome: 'wagner', contracts: [{ id: 1, contract: '123456', batches: [ { id: 1, contract_id: 1, batch: '1', invoices: [ { value: 10, batch_id: 1, }] }, { id: 2, contract_id: 1, batch: '2', invoices: [{ value: 10, batch_id: 2, }] }] }, { id: 2, contract: '246789', batches: [ { id: 3, contract_id: 2, batch: '1', invoices: [ { value: 20, batch_id: 3, }] }] }] } const revelling = (function() { function privateInit() { const contracts = objectContract.contracts; let contractFilteredById = contracts.filter(contract => contract.id === contractInAttendance); for (const contract of contracts) { const selectedContract = contract.id === contractFilteredById[0].id ? 'in-attendance' : ''; let htmlForBatchsOptions = contract.batches.map(batch => `<option value=${batch.id}>${batch.batch}</option>`).join(''); lblContract.innerHTML += `<div class="contract-${selectedContract}" style="display: flex;"> <div id="contract-${contract.contract}" data-contract="${contract.id}" class="loren"> <span>${contract.contract}</span> </div> <div class="ipsulum" style="margin-left: 5px;"> <select class="sel-batch"> ${htmlForBatchsOptions} </select> </div> </div>`; const batchOption = lblContract.querySelector('select.sel-batch'); batchOption.addEventListener('change', getInvoices); //batchOption.value = 2; } } function getInvoices() { const batchValue = event.target.value console.log(batchValue); //console.log(this.value); } return { init: privateInit() } })(); revelling.init; </script> </html>  
    • By mamotinho
      Olá, gostaria de sabe como posso fazer uma contagem regressiva apartir de um registro em meu banco de dados eu tentei montar um código da seguinte forma:

       
      <? $DateGET = date('m/d/Y H:i A', strtotime($result->DateDiscount)); ?> <script> var valueDate = <?=$DateGET?>; var end = new Date(valueDate); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "EXPIRED!"; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); document.getElementById("countdown").innerHTML = "<span class='n_date day' id='days'>" + days + "</span><span class='date'>일</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time hour' id='hrs'>" + hours + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time minute' id='minus'>" + minutes + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time second' id='secs'>" + seconds + "</span>"; } timer = setInterval(showRemaining, 1000); </script> Mais infelizmente não passou a data registrada no banco de dados, alguém teria ideia de como posso ta fazendo.
    • By everton_araujo
      Boa noite pessoal, tudo bem?
      Gostaria de saber como mudo a propriedade target="_blank"
       para target="_system" via javascript. Muito obrigado.
       
      <a href="https://bemdiario.com/wp-content/uploads/2020/06/água-da-rocha.pdf" target="_blank" rel="noopener noreferrer nofollow" download="" class="jsx-936791898 eape-item-linkWrapper"><div class="jsx-936791898 eape-item-link">Baixar PDF</div></a>
    • By lumbarque_Oficial
      Tô a procura de uma equipe para participar 
       
      Sou programador, spriter ou músico
       
      meu nome é Gabriel , tenho 18 anos e já participei de uns grupo pequenos
       
      Sei de tudo um pouco mas a área que eu tô mais querendo botar a mão na massa atualmente é programação
       
      ~ alguém? ~
    • By LeoBrN
      Estou a dias tentando resolver este problema que aparentemente é simples, mas quem não lida com aplicações locais não conseguiu me ajudar (todos que contatei).
       
      Recentemente recebi e instalei os códigos de um aplicativo que funciona na WEB para eu rodar localmente e fazer testes em paralelo para não interferir na versão em execução.
       
      Tive sucesso na instalação do XAMPP, na importação e configuração do BD e também ao rodar a aplicação, aparentemente funcionando perfeitamente, então, ao testar as funcionalidades eu fiz o upload de arquivos com sucesso, porém ao tentar abri-los surge este erro:
       
      Sorry, the page you are looking for could not be found
       
       
      O caminho apresentado para ler o arquivo que dá o erro é esse:
       
      Localhost:800/public/storage/uploads/classes_uploads/upload_file123.PDF
       
       
      Os aquivos que fiz upload estão salvos nesta pasta:
       
      D:\XAMPP\htdocs\MyApp\storage\app\public\uploads\classes_uploads
       
       
      Ao digitar no navegador o caminho correto onde os arquivos estão, ele é acessado corretamente:
       
      Localhost:800/MyApp/storage/app/public/uploads/classes_uploads/upload_file123.PDF
       
       
      Por favor, alguém pode me ajudar?
×

Important Information

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