Atualizar valor de campo

2,162 views
Skip to first unread message

Luiz Severo

unread,
Nov 20, 2009, 7:32:32 AM11/20/09
to jQuery (Brasil)
Pessoal,

Estou começando agora tanto no jQuery como no javascript então a
pergunta deve ser simples. Tenham paciência!!!! :-)

Tenho os clássicos combos de Estado e Cidade. O combo de estado é fixo
no html. Nessa página eu tenho 2 campos hidden (sigla_uf e id_cidade)
que são preenchidos através de uma página .php que faz acesso ao
banco, le as templates e depois monta tudo e exibe.
Estou fazendo o seguinte para atualizar os combos:
$(document).ready(function()
{
$('#estado').change(function()
{
$('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
});

$("#estado").val(document.getElementById('sigla_uf').value);
$("#estado").change();
$("#cidade").val(document.getElementById('id_cidade').value);
});

Meu problema é que o combo das cidades não atualiza de modo algum,
fica parado na cidade incial de carga do combo.
Alguém pode me dar uma luz??!!

Obrigado.
Luiz Severo

Paulo Diovani

unread,
Nov 20, 2009, 8:57:43 AM11/20/09
to jque...@googlegroups.com
Cara, dá uma procurada em "combo cidade estado" no Google, que tu vai
encontrar alguns tutoriais bem fáceis.
Em todo o caso, vai algumas dicas:

1. Você tem dois modos de atualizar os dados de um <select> (combo), um é
adicionando e removendo elementos via DOM. Outra é reescrevendo as
<option>s, e substituindo o innerHTML do <select>.
2. Se desejar executar javascript em uma página (view) chamada por AJAX,
escreva o Javascript no final desta (após o fragmento de HTML).

__
Paulo Diovani Gonçalves
pa...@diovani.com
http://diovani.com


-----Mensagem original-----
De: jque...@googlegroups.com [mailto:jque...@googlegroups.com] Em nome
de Luiz Severo
Enviada em: sexta-feira, 20 de novembro de 2009 10:33
Para: jQuery (Brasil)
Assunto: [jquery-br] Atualizar valor de campo

Reinaldo Junior

unread,
Nov 20, 2009, 4:06:05 PM11/20/09
to jque...@googlegroups.com
$(document).ready(function() {
 $('#estado').change(function()  {
   $('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
 });
});
faz exatamente como tu ta fazendo acima so que ja traz teu select montado por ajax.


2009/11/20 Paulo Diovani <pa...@diovani.com>



--
* ♣Reinaldo Junior Krinski Freitas♣*

Luiz Severo

unread,
Nov 23, 2009, 5:18:53 AM11/23/09
to jQuery (Brasil)
O combo de cidades já está sendo montado perfeitamente com as
instruções que mostrei....
O problema é que depois de montado eu tento "setar" o valor dele para
o valor que trago do banco e nada, continua no primeiro item do
combo.... A instrução que uso é: $("#cidade").val
(document.getElementById('id_cidade').value); aonde cidade é o id do
combo e id_cidade é um campo hidden.

Já dei um alert no valor de id_cidade e está correto...

Será que a instrução que atualiza o combo de cidades não deveria ficar
no $(document).ready() ?? Teria que colocar em outro ponto?


Obrigado.

José Henrique

unread,
Nov 23, 2009, 7:38:37 AM11/23/09
to jque...@googlegroups.com
Tenta assim:

$("option", $("#cidade")).filter("[value='" + $('#id_cidade').val()+
"']").attr("selected", true);

Zénrique.

2009/11/23 Luiz Severo <lhse...@gmail.com>:

Luiz Severo

unread,
Nov 23, 2009, 3:27:58 PM11/23/09
to jQuery (Brasil)
Zénrique,

Infelizmente não funcionou.... :-(


On 23 nov, 10:38, José Henrique <jhr...@gmail.com> wrote:
> Tenta assim:
>
> $("option", $("#cidade")).filter("[value='" + $('#id_cidade').val()+
> "']").attr("selected", true);
>
> Zénrique.
>
> 2009/11/23 Luiz Severo <lhsev...@gmail.com>:

Eder Araujo de Souza

unread,
Nov 23, 2009, 3:45:44 PM11/23/09
to jque...@googlegroups.com
Assista esse video.

http://www.mxmasters.com.br/php/php-combo-dinamico-com-php-e-jquery/

att,
Eder

2009/11/23 Luiz Severo <lhse...@gmail.com>



--
ぼくは エデル です

Leonardo Balter

unread,
Nov 23, 2009, 3:51:17 PM11/23/09
to jque...@googlegroups.com
Vamos colocar mais jquery nesse seu código para simplificar o JS?

Do seu código:

$(document).ready(function()
{
$('#estado').change(function()
{
$('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
});

$("#estado").val(document.getElementById('sigla_uf').value);
$("#estado").change();
$("#cidade").val(document.getElementById('id_cidade').value);
});

Vamos mudar algumas coisas, sem alterar o sentido do código:

$(document).ready(function()
{
$('#estado').change(
$('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
);
$("#estado").val($('#sigla_uf').val());
$("#estado").change();
$("#cidade").val($('#id_cidade').val());
});

Documento limpo, agora a pergunta: Voce quer dar triger no elemento
estado dessa forma?

A impressao é que essa manipulação do elemento #cidade deve acontecer
dentro do $('#estado').change(...) assim como a do elemento #estado

Sei la, parece um pouco incompleto e redundante. Voce aplica um valor
ao elemento #estado e logo após da trigger. Tipo, ao aplicar o valor
você já está dando trigger.

Segundo o valor do field #id_cidade parece estar se mantendo sempre o
mesmo, assim voce quer alterar #cidade com o valor de #id_cidade.

Nao seria dar load em #id_cidade?

Abraços

2009/11/23 Luiz Severo <lhse...@gmail.com>:
--
Leo Balter
http://www.flyleo.com.br

Luiz Severo

unread,
Nov 24, 2009, 6:40:14 AM11/24/09
to jQuery (Brasil)
Oi Leonardo,

Vou comentar aí abaixo....

> Do seu código:
>
> $(document).ready(function()
> {
>  $('#estado').change(function()
>  {
>    $('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
>  });
>
>  $("#estado").val(document.getElementById('sigla_uf').value);
>  $("#estado").change();
>  $("#cidade").val(document.getElementById('id_cidade').value);
>
> });
>
> Vamos mudar algumas coisas, sem alterar o sentido do código:
>
> $(document).ready(function()
> {
>  $('#estado').change(
>    $('#cidade').load('combocidades.php?ESTADO='+$('#estado').val());
>  );
>  $("#estado").val($('#sigla_uf').val());
>  $("#estado").change();
>  $("#cidade").val($('#id_cidade').val());
>
> });
>

** Bom, pelo que eu entendi, basicamente o que mudou foi retirar a
referência ao elementos do dom e colocar direto jQuery.


> Documento limpo, agora a pergunta: Voce quer dar triger no elemento estado dessa forma?

** O trigger é esse mesmo. Toda vez que mudar o estado tem que
carregar as cidades dele. O código está funcionando ok desse modo...


> A impressao é que essa manipulação do elemento #cidade deve acontecer dentro do $('#estado').change(...) assim como a do elemento #estado

** Já tentei colocar a instrução $("#cidade").val($('#id_cidade').val
()); dentro do change do #estado e nada aconteceu...


> Sei la, parece um pouco incompleto e redundante. Voce aplica um valor ao elemento #estado e logo após da trigger. Tipo, ao aplicar o valor
> você já está dando trigger.

** Sim, para poder carregar o combo de cidades. Se não fizer isso o
combo de cidades permanece com as cidades do estado que estava
anteriormente.


> Segundo o valor do field #id_cidade parece estar se mantendo sempre o mesmo, assim voce quer alterar #cidade com o valor de #id_cidade.
> Nao seria dar load em #id_cidade?

** O #id_cidade é um campo hidden no form que eu atribuo o valor a
partir de um script php. Ele muda de acordo com o estado aonde se
localiza o cliente. Com certeza ele tem um equivalente no combo
#cidade quando é carregado pelo change do #estado.


** A não ser que o combo esteja sendo carregado de forma errada pelo
script php. O nome da cidade aparece certo, mas o código da cidade
(que é o value do combo) pode estar ruim..... Não tenho o código em
php aqui agora comigo, depois posto aqui para quem souber php ver se
tem algo errado. Mas acredito que não....


Obrigado!!!

José Henrique

unread,
Nov 24, 2009, 8:13:19 AM11/24/09
to jque...@googlegroups.com
Rapaz, não funcionou é uma resposta prá lá de genérica. Você
verificou se $("option", $("#cidade")) retorna a lista de options?
Se isso não ocorre, então o id do select (cidade) não está correto.
Se retorna a lista de options, o valor que você procura está em
alguma delas? Se estiver, então provavelmente o valor que está em
id_cidade não é exatamente igual ao da option (algum espaço em branco,
tipo diferente, etc.).

Em suma, um pouco de debug não faz mal a ninguém.

Abraços,

Zénrique.

2009/11/23 Luiz Severo <lhse...@gmail.com>:
>

Luiz Severo

unread,
Dec 2, 2009, 8:52:54 PM12/2/09
to jQuery (Brasil)
José Henrique,

Sou bem novo na utilização de javascript e jquery. Não conheço bem
todos os comandos que posso usar tanto para o desenvolvimento como
para debugar.
Por exemplo, dei um document.write($("option", $("#cidade"))) e
retornou [object Object]. O que isso quer dizer? Deveria ter retornado
a lista dos options do combo cidade?


Valeu

José Henrique

unread,
Dec 8, 2009, 3:05:31 PM12/8/09
to jque...@googlegroups.com
Para fazer esse tipo de depuração da página, utilize o Firefox com
Firebug. É uma mão na roda.

Zénrique.

2009/12/2 Luiz Severo <lhse...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages