Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

matheusmarson

Posicionamento combobox de estados e cidades

Recommended Posts

Olá a todos.

 

Estou com um problema para posicionar um combobox populado com cidades via ajax em uma determinada cidade.

As situação é a seguinte:

 

Tem 2 combobox um para estados e outro para cidades ambos populados via ajax com dados do BD

o combo estado carrega todos os estados que estão cadastrados no BD. Até aí blz!

 

O combo cidades vai carregar as cidades do BD que correspondem a escolha da o estado no combo de estados.

Blz funcionando perfeito

 

Ocorre que para realizar alterações de dados dos usuários preciso posicionar estes 2 combos já nos valores que foram cadastrados no momento do cadastro, ou seja se o usuário se cadastro como estado de São paulo e cidade de Bauro por exemplo os combos deveriam ser posicionados nestes valores

 

Na página de atualização após carregar os campos com as funções de carregamento que criei em ajax fui posicionar via jquery da seguinte forma:

 

$("#estados").val($variavel_que_pega_estado_BD); 

aqui funcionou perfeito! Posicionou o combo;

 

$("#cidades").val($variavel_que_pega_cidade_BD);

Aqui já não posicionou!

 

Alguém saberia me dizer o porque?

Teria que dar algum refresh no combo cidade após ele receber os dados via ajax?

 

Desde já muito obrigado

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiro eu não faria dessa forma, pois é chato demais escolher o Estado e depois a cidade, o melhor é você fazer um auto-complete em um input tipo texto, e a pessoa vai digitando o nome e vai aparecendo as cidades parecidas (filtrando), daí ele seleciona somente uma e você vai salvar somente o ID da cidade em questão na tabela do usuario. Já na requisição no banco para alteração faria basicamente a mesma coisa, só que você vai carregar a cidade buscando o ID da tabela de usuários e coloca no input somente o nome, e em um oculto coloca o valor do ID.

 

ex.:

<!--PÁGINA DE CADASTRO-->

<script>
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //PRA DEIXAR CLARO!
  $(function(){
		$("#cidade").auto_preenchimento(fucntion(){
			$("#cidade-id").val(id_dessa_cidade);
		});
  });
</script>
<form>
	<input type="text" name="nome" value="" />
	<input type="text" id="cidade" name="cidade" value="" />
 	<input type="hidden" name="cidade-id" value="" />
</form>






<!--PÁGINA DE EDIÇÃO-->

<script>
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //CÓDIGO FICTÍCIO (NÃO FUNCIONA)
  //PRA DEIXAR CLARO!
  $(function(){
		$("#cidade-id").pega_valor(fucntion(){
            //faz o ajax no PHP pra achar o nome
			$("#cidade").val(nome_da_cidade);
		});
  });
</script>
<form>
	<input type="text" name="nome" value="Quimera das Tantas" />
	<input type="text" id="cidade" name="cidade" value="Nome da Cidade - UF" />
 	<input type="hidden" name="cidade-id" value="15" />
</form>

modelo: 

https://jqueryui.com/autocomplete/

img.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luiz monteiro
      Olá. Tenho 3 formulários em uma mesma pagina, onde cada um tem 1 input type text.
      O que preciso é recuperar o nome desses inputs e o valor correspondente ao formulário submetido.
      =============
      form name="formulario1" id="formulario1"
      input type="text" name="nome1" value="valor1" /form
      form name="formulario2" id="formulario2"
      input type="text" name="nome2" value="valor2" /form
      form name="formulario3" id="formulario3"
      input type="text" name="nome3" value="valor3" /form
      =============
      ..........
      var formulario_submetido = document.getElementById("formulario1"); formulario_submetido.addEventListener('submit', function(e) { e.preventDefault(); //tentei console.log(document.querySelectorAll('#'+this.id + ' input').name); //tentei var formula = new FormData(formulario_submetido); console.log(formula.input['type=text'].name); //tentei console.log(formula.get(input['type=text']).name); ..........
        no console.log(e), ele está nessa hierarquia   form -> srcElement -> input -> attributes -> name 
      Como recupero o valor do name dele e o valor do value?
       
      Agradeço desde já.
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por ILR master
      Salve galera.
       
      Vou publicar um evento e quero colocar um Cronômetro regressivo que mostre em tempo real os dias, horas e minutos que faltam para determinada data, tipo:.
      Faltam 5 dias, 12:30:00 para inauguração.
       
      Qdo chegar no dia, quero que apenas apareça uma mensagem.
       
      Alguém pode me ajudar?
    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.