Jump to content
gersonab

autocomplete, obrigar aquisição do id

Recommended Posts

Boa tarde, tenho uma página de pesquisa com vários campos, podendo usar um apenas para pesquisa, fica a critério da pessoa, o que acontece é que todos os campos quando se faz o autocomplete ele envia a pesquisa pelo id, porém se eu enviar o campo em vazio o formulário envia assim mesmo a pesquisa, gostaria que só enviasse caso estivesse com o id.

segue o formulário:

 <h4>Localizar por ...</h4>
<form  role="form" action="listcliente.php" method="GET"  autocomplete='off'>
  <div class="form-row mb-4">
    <div class="form-group col-md-12">
      <label>Nome ou ...</label>
      <input type="text" name="nomec" id="nomec" class="form-control" style="text-transform: uppercase;">
      <input type="hidden" name="idc" id="idc">
    </div>
  </div>
  <div class="form-row mb-4">
    <div class="form-group col-md-4">
      <label>CPF ou ...</label>
      <input type="text" name="cpfc" id="cpfc" class="form-control">
    </div>

    <div class="form-group col-md-4">
      <label>CNPJ ou ...</label>
      <input type="text" name="cnpj" id="cnpj" class="form-control">
    </div>
    <div class="form-group col-md-4">
      <label>Data de nascimento</label>
      <input type="text" name="datan" id="datan" class="form-control">
    </div>
  </div>
  <input type="submit" name="Localizar" value="Localizar" class="btn btn-primary mt-3">

</form>

o autocomplete, apenas um de exemplo.

$( "#nomec" ).autocomplete({
minLength: 2,
source: function( request, response ) {

$.ajax({
url: "../lista/autocli.php",
type: 'post',
dataType: "json",
data: {
search: request.term
},
success: function( data ) {
response( data );
}
});
},
select: function (event, ui) {
$('#nomec').val(ui.item.label); // display the selected text
$('#idc').val(ui.item.value); // save selected id to input
return false;
}
});

a página autocli.php

<?php
require_once('config.php');
if(isset($_POST['search'])){
 $search = $_POST['search'];

 $query = "SELECT nomec, idc FROM cli WHERE nomec LIKE '%".$search."%'";
 $result = mysqli_query($con,$query);

 $response = array();
 while($row = mysqli_fetch_array($result) ){
   $response[] = array("value"=>$row['idc'],"label"=>$row['nomec']);
 }

 echo json_encode($response);
}

exit;
?>

desde já agradeço a ajuda.

Share this post


Link to post
Share on other sites

resolvi da seguinte forma

$("#localiza").submit(function () {
        var vazios = $("input[name=idc]").filter(function() {
            return !this.value;
        }).get();

        if (vazios.length) {
            $(vazios).addClass('vazio');
            alert("Seleção inválida ou vazia.");
            return false;
        
        }
    });

 

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 mateus.andriollo
      Qual seria a forma correta de projetar uma aplicação multi formulários. Estou fazendo ela em Jquery com Load() mas algumas ações não são executadas em script.
      Me pergunto seria o correto?
       
      Exemplo: pensando um cadastro de clientes/empresas
      - clientes.php (formulário de cadastro/edição/anexos)
      - empresas.php (formulários de cadastro de empresa/ funcionários/ setores)
      - relatorios.php (clientes e empresas)
       
      Cada página dessa eu chamo, ela vem sempre com o seu conteúdo...
      Pensei no seguinte, todos estea formulários carregados e eu apenas usar função Get() para preencher campos e gerar os relatórios.
       
      Fica a dúvida, pois hj essas páginas extras são HTML com form e ações PHP
       
       
       
       
       
    • By marcossantana10
      Amigos, estou com o seguinte problema: quando monto meu formulário dinamicamente, ao clicar no botão submit é dado um refresh na página, ao invés de realizar o submit. Esse formulário busca todos os registros de uma dada categoria no banco de dados e os monta na página para que possam ser editados individualmente.
      Segue o código:
      //montando os formulários:
          $.each(responseJson, function(key, value){                                 var itens = "<div class='card_nbl'><div class='container_nbl'><div class='text_card_nbl update_info_consulta'><form name='updateProntuario' method='post'><label style='text-align: left;' for='prontuario'>Consulta:</label><textarea name='prontuario' class='input_full' style='resize: none; height: 100px; padding-top: 10px; margin-top: 5px;' id='prontuario'>"+value.descricao+"</textarea><label style='text-align: left;' for='info_sigilosa'>Informações sigilosas:</label><br><textarea name='info_sigilosa' class='input_full' style='resize: none; height: 100px; padding-top: 10px; margin-top: 5px;' id='info_sigilosa'>"+value.info_sigilosa+"</textarea><input type='submit' name='salvar' value='Salvar' class='btn btn_padrao'></form></div></div></div>"                                 $("#item1mobile").append(itens)                             })  
      Minha função de submit:
          $(function(){                 $('form[name=updateProntuario]').submit(function(){                     $.ajax({                         type: 'POST',                         url: 'www',                         dataType: 'json',                         data: $(this).serialize(),                         success: function(data){                             $("#loading").attr("class", "loading")                             swal_sucesso("Tudo certo!", "As informações sobre a consulta foram atualizadas.")                         }                     });                 return false;                 })             }) OBS: quando eu faço o formulário direto no HTML (sem montar vários itens com um laço, como acima), o submit funciona normalmente.
       
    • By alysson122010
      Galera estou começando a trabalhar com datatables porem tenho uma dificuldade pq tipo até 200 registros por pagina é aceitavel mas penso quando tiver 2000 registro carregar tudo numa pagina so da errado pq é muitos dados e pode travar tudo.
      Como posso fazer para listar com limite por pagina ou alguma maneira para poder colocar varios dados sem travar.
       
      estou usando assim:
      <script type="text/javascript">        $(document).ready(function() {             $('#example').DataTable({         "order": [[ 0, "desc" ]],         "language": {             "url": "//cdn.datatables.net/plug-ins/1.10.21/i18n/Portuguese-Brasil.json"         }     });         } );        </script> <table id="example" class="table table-striped table-bordered" style="width:100%">         <thead>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </thead>         <tbody>             <tr>                 <td>Tiger Nixon</td>                 <td>System Architect</td>                 <td>Edinburgh</td>                 <td>61</td>                 <td>2011/04/25</td>                 <td>$320,800</td>             </tr>             <tr>                 <td>Garrett Winters</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>63</td>                 <td>2011/07/25</td>                 <td>$170,750</td>             </tr>             <tr>                 <td>Ashton Cox</td>                 <td>Junior Technical Author</td>                 <td>San Francisco</td>                 <td>66</td>                 <td>2009/01/12</td>                 <td>$86,000</td>             </tr>             <tr>                 <td>Cedric Kelly</td>                 <td>Senior Javascript Developer</td>                 <td>Edinburgh</td>                 <td>22</td>                 <td>2012/03/29</td>                 <td>$433,060</td>             </tr>             <tr>                 <td>Airi Satou</td>                 <td>Accountant</td>                 <td>Tokyo</td>                 <td>33</td>                 <td>2008/11/28</td>                 <td>$162,700</td>             </tr>             <tr>                 <td>Brielle Williamson</td>                 <td>Integration Specialist</td>                 <td>New York</td>                 <td>61</td>                 <td>2012/12/02</td>                 <td>$372,000</td>             </tr>             <tr>                 <td>Herrod Chandler</td>                 <td>Sales Assistant</td>                 <td>San Francisco</td>                 <td>59</td>                 <td>2012/08/06</td>                 <td>$137,500</td>             </tr>             <tr>                 <td>Rhona Davidson</td>                 <td>Integration Specialist</td>                 <td>Tokyo</td>                 <td>55</td>                 <td>2010/10/14</td>                 <td>$327,900</td>             </tr>             <tr>                 <td>Colleen Hurst</td>                 <td>Javascript Developer</td>                 <td>San Francisco</td>                 <td>39</td>                 <td>2009/09/15</td>                 <td>$205,500</td>             </tr>         </tbody>         <tfoot>             <tr>                 <th>Name</th>                 <th>Position</th>                 <th>Office</th>                 <th>Age</th>                 <th>Start date</th>                 <th>Salary</th>             </tr>         </tfoot>     </table> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script> <script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.22/js/dataTables.bootstrap4.min.js"></script>  
    • By lezão
      Ola boa noite!
      td bem com vcs?
       
      Galera estou precisando de  um codigo que quando der um certo horario tipo 10:00 hs da manhã o codigo mostra a div.
      E as 16:00 hs o codigo OCULTA a div automaticamente.
       
      Tenho um Codigo que faz isso, mas tem q clicar em um botão, vejam abaixo:
      <script src="https://stacksnippets.net/scripts/snippet-javascript-console.min.js?v=1"></script> <div id="minhaDiv" style="display:none">Conteudo</div> <button type="button" onclick="Mudarestado('minhaDiv')">Mostrar / Esconder</button> <script type="text/javascript"> function Mudarestado(el) { var display = document.getElementById(el).style.display; if (display == "none") document.getElementById(el).style.display = 'block'; else document.getElementById(el).style.display = 'none'; } </script> obrigado!
    • By Carcleo
      Estou a um tempo tentando criar um slider personalizado.
      De fato, eu até consegui e coloquei no codepen. https://codepen.io/carcleo/pen/yLVOxMv
       
      Mas uma implementação não estou conseguindo fazer.
       
      Nos sliders prontos que pegamos na web, ao redimencionar manualmente o navegador,   a UL que abriga as LI's com os Slides, se redimenciona junto e isso não acontece com o meu, Isto é, ao diminuir a janela do navegador, as imagens acompanham o tamanho das LIs, mas como não consigo redimencinar a UL junto os slides acabam se mostrando de forma errada. 
       
      Não consegui uma forma de fazer o CSS fazer esse serviço. Só consegui com JS.
       
      Se alguém puder ajudar?
       
      Obs.: não quero copiar da internet, meu objetivo é entender a logica da coisa
×

Important Information

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