Carregar campo de descrição automático [RESOLVIDO]

6 respostas
vasilvei

Boa tarde pessoal estou desenvolvendo uma aplicação usando vraptor e hibernante, o que eu queria é o seguinte: tenho um cadastro de funcionário que tem uma chave estrangeira do cadastro pessoa, eu queria que quando eu informasse o código do funcionário que é chave estrangeira da pessoa, e também campo chave do funcionário, que ele trouxesse o nome, em outro campo do lado, eu imaginei fazer algo tipo no onblur, do campo chave chamar uma funçao em javascript passando o valor do código, e que ele fizesse uma consulta, e carregasse o campo nome, como fazer isso, alguem sabe, fazer algo com taglib, ou javascrip, ou em java mesmo com Vratpor, abaixo a parte do formulário que tenho:

<input id="idpessoa" class="limpar" type="text" onkeypress="return desEnterLetras(this, event);" value="${funcuser.idpessoa}" name="funcuser.idpessoa" size="10" maxlength="10">

<input id="pessoanome"  readonly="readonly"  class="limpar" type="text" value="${funcuser.pessoa.nome}" name="funcuser.pessoa.nome" size="40" maxlength="40" onkeypress="return desabilitaEnter(this, event);">

6 Respostas

vasilvei

Alguem,

Lucas_Cavalcanti

não sei se entendi o que vc quer fazer, vc quer que qdo digitar o id aparecer o nome da pessoa automaticamente?

vasilvei

Isso, que ele faça a busca no banco pelo id que eu passei, e retorno o nome no campo do lado do id. tem como fazer isso usando taglib, javascritp, ou algo assim…

Lucas_Cavalcanti

dá pra fazer razoavelmente fácil com jQuery puro (javascript).

$('#idpessoa').blur(function() {
   var id = $(this).val(); //o valor do input
   $.get('/pessoa/busca', {'pessoa.id', id}, function(data) {
        $('#pessoanome').val(data);
   }
});

e na lógica que responde por /pessoa/busca é só fazer

result.use(http()).body(nomeDaPessoa);

[]'s

vasilvei

Perfeito Lucas, muito obrigado!

vou postar a implementação para quem quiser usar.

funcuserEdit.jsp

<input id="idpessoa" onblur="getPessoa(this);" class="limpar" type="text"  value="${funcuser.pessoa.idpessoa}" name="funcuser.pessoa.idpessoa" size="10" maxlength="10">


                    <input name="funcuser.pessoa.nome" value="${funcuser.pessoa.nome}" class="limpar" id="pessoanome">

Jquery:

function getPessoa(){
      $.get("/Coliseu/buscaPessoa/busca?idpessoa="+$("#idpessoa").val(), function(data){
          $('#pessoanome').val(data); 
      });
  }

PessoaController.class

@Get
    @Restrito
    @Path("/buscaPessoa/busca")
    public void buscaPessoa(Integer idpessoa) {

        result.use(Results.http()).body(dao.getPessoas(idpessoa));             


    }
vasilvei

Cara só mais uma dúvida vamos supor que eu queira retornar mais que uma string, tipo 2 ou mais valores no caso da cidade, tipo eu passo o id da cidade, ele retorna em um campo o nome da cidade e em outro a uf, como eu faria isso?

Criado 4 de fevereiro de 2011
Ultima resposta 16 de fev. de 2011
Respostas 6
Participantes 2