Jquery - MaskedInput

Oi pessoal,

Estou utilizando a extensão maskedInput do jQuery para mascarar campos de texto.
E uma das funções oferecidas, é executar uma função callback, qdo a máscara estiver completa.
Porém, pelo meu baixo conhecimento em JS, não estou identificando um comportamento que ocorre:

Quando executo o código desta forma:

jQuery(function(){ $("#cep").mask("99999-999", {completed: function(){buscaEndereco()}}); });
Ocorre tudo como eu quero, quando eu completo a máscara, ou seja, qdo digito todos os caracteres do CEP, é chamada a função buscaEndereco.

Porém, se a função for chamada desta forma:

jQuery(function(){ $("#cep").mask("99999-999", {completed: buscaEndereco()}); });
A função buscaEndereco é chamada assim que a página é carregada. Pq isso ocorre?

Olá,

No primeiro caso o callback funciona porque ele recebe uma função como parametro, então internamente ele chama o metodo call para executar esta funcão.
No segundo caso vc não esta passando uma função e sim o valor de retorno desta função, por isso que não esta funcionando.

Use o código abaixo, repare que eu não estou usando os parenteses no final da função buscaEndereco, porque estou passando a função como parametro e não o valor do retorno.

      $("#cep").mask("99999-999", {completed: buscaEndereco});

Qualquer dúvida manda aiii!!

Abraço!

Obrigado pela resposta mmaico,
Esclareceu minha dúvida, sei que é algo básico, mas isso é o que dá começar a mexer no jquery sem antes saber muito de JS, mas as circunstancias estão pedindo isso.

Passada essa dúvida, surgiu outra:
Estou fazendo um combo com jQuery.ajax(). Ao selecionar um estado no combobox, o combo cidades já é populado com as cidades daquele estado.

Fiz e já está funcionando, porém eu só soube fazer com a servlet montando o html dentro dela e jogando para o jsp, daí quando o jQuery recebe o html, faço um:

Eu queria que a servlet retornasse um json ou até xml só com os dados da cidade, e sei fazer isso.
Porém o que não sei é fazer o jQuery popular o com os dados assim recebidos.
=/

Olá goldfish,
Usando Json você teria que montar o html no calback da sua função ajax, seria algo assim:

     $.ajax {
         url : '/cities/all',
         dataType: 'json',
         type: 'get',
         success : function(cities) {
               //O Json que voce retornar da sua servlet entrará na sua função com o parametro cities(pode ser qualquer nome)
                
                var citiesOptions= '';
                for(var i=0; i < cities.length; i++){
                		
                	options += '<option value="' +cities[i].id +'">' + cities[i].name + '</option>';
                } 
              
               $("#cidadesSelect").html(citiesOptions);
    
         }
     }

Qualquer problema manda aii!!!

abraço!

Então o java script já entenderá cities como um tipo json? Ele entende que é um json e vc já pode chegar usando como um array pra fazer um for?
que beleza isso…
Então se eu mandar um xml ele tb entende e consigo fazer o mesmo?
assim fica fácil

abraços mmaico

Sim, ele vai entender que é um json array e assim vc pode iterar sobre os itens, quanto ao xml vc precisaria mudar seu dataType, mas segue o mesmo esquema.

Facil né?? coisa linda isso :slight_smile:

abraço!

Hehe,

Coisa linda mesmo cara.

Muito obrigado pela ajuda.
abraço