Ir para o conteúdo

 Voltar a Fórum do For...
Tela cheia

Autocomplete devolve apenas valor 0 (zero) ao campo do form

19 de Fevereiro de 2014, 12:32 , por Desconhecido - | 1 Pessoa seguindo este artigo.
Visualizado 29 vezes

Fiz um formulário que pede um select de uma tabela muito extensa.  Impossível carregar em um select comum, e seria inviável solicitar ao usuário que selecionasse um ítem entre tantos.  Solução: ou autocomplete, ou onlinesearch...

Fui ao autocomplete primeiro, que parecia já ter uma solução para o que eu pretendia, pois é a tabela de táxons (espécies).  Eis uma de tantas tentativas que fiz:

 <código>

frm->addTextField( 'SEQ_TAXONOMIA', 'Espécie:', 60,true )->setExampleText( 'Digite os 3 primeiros caracteres.')->addEvent('onblur','validarEspecie(this)');
$frm->setAutoComplete( 'SEQ_TAXONOMIA' // nome do campo
                                , 'sistaxon' // '(select SEQ_TAXONOMIA, NOM_CIENTIFICO from sistaxon) as taxredux'  // tabela ou pacote
                                , 'NOM_CIENTIFICO'  // campo de busca
                                , null // campo de atualização
                                , true // desabilita campo de atualização
                                , null // campo de busca extra
                                , null // chama javascript
                                , 3 // caracteres mínimos a digitar para iniciar busca automática
                                , 1000 // atrazo para iniciar busca
                                , 50 // máximo de ítens a mostrar
                                , null // tempo de cache
                                , null // remover máscara
                                , null // url que devolverá os dados para o autocomplete no formato "descriçao|chave\n"
                                , null // chama os parâmetros
                                , true ); //hint

<código>

Os arquivos salvar e dao não apresentam quaisquer modificações a partir do padrão.  Já tentei várias outras combinações, colocando um campo hidden com o nome da coluna a ser carregada (acusa erro ao clicar no botão salvar, dizendo que o valor está nulo) e outras, mas nada surte efeito.

Nesta forma, e em outras semelhantes, o campo é preenchido com zero (0), o que encontra correspondência na tabela, salvando sempre como se estivesse sido escolhida a mesma espécie, não importa qual espécie o usuário escolher ao preencher o formulário.

 Qualquer sugestão é bem vinda. Obrigada.

Autor: Cláudia de Aguiar


44 comentários

  • 40039becdad4241880bbec097c167704?only path=false&size=50&d=404Cláudia de Aguiar(usuário não autenticado)
    19 de Fevereiro de 2014, 18:11

     

    Não querendo fazer um 'bump' mas já fazendo...

    Em um outro form tenho um autocomplete para município que funciona perfeitamente, copiado e colado exatamente do exemplo do base/exemplos sem tirar nem por.

    • 40039becdad4241880bbec097c167704?only path=false&size=50&d=404Cláudia de Aguiar(usuário não autenticado)
      20 de Fevereiro de 2014, 10:38

       

      Bump de novo. Testei o outro formulário, do município,o que eu achava que estava funcionando perfeitamente.  Não está.

      Estou começando a achar que é algo global que está faltando em meu servidor, alguma biblioteca de java script ou algo assim...

      O que pode estar faltando que executa o alterar e o excluir dos grids, o onlinesearch e o autocomplete, mas não o resto?  Alguem aí pra me ajudar?

      • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
        20 de Fevereiro de 2014, 14:29

         

        Cláudia,

        Para utilizar o autocomplete crie um campo oculto para receber o código e um campo texto para o usuário digitar o nome. Pelo que vi você está definindo o autocomplete no campo chave ( SEQ_TAXONOMIA), assim não vai funcionar mesmo.

        Outra coisa, sempre os nomes dos campos do formulário devem ser em caixa baixa.

        Teste o código abaixo para ver se resolve o problema:

        $frm->addHiddenField('seq_taxonomia'); // campo chave
        $frm->addTextField( 'nom_cientifico', 'Espécie:', 60,true )->setExampleText( 'Digite os 3 primeiros caracteres.')->addEvent('onblur','validarEspecie(this)');
        $frm->setAutoComplete( 'nom_cientifico' // nome do campo
                                        , 'sistaxon' // '(select SEQ_TAXONOMIA, NOM_CIENTIFICO from sistaxon) as taxredux'  // tabela ou pacote
                                        , 'NOM_CIENTIFICO'  // campo de busca
                                        , 'SEQ_TAXONOMIA' // campo de atualização
                                        , true // desabilita campo de atualização
                                        , null // campo de busca extra
                                        , null // chama javascript
                                        , 3 // caracteres mínimos a digitar para iniciar busca automática
                                        , 1000 // atrazo para iniciar busca
                                        , 50 // máximo de ítens a mostrar
                                        , null // tempo de cache
                                        , null // remover máscara
                                        , null // url que devolverá os dados para o autocomplete no formato "descriçao|chave\n"
                                        , null // chama os parâmetros
                                        , true ); //hint

        Abraço.

        • 40039becdad4241880bbec097c167704?only path=false&size=50&d=404Cláudia de Aguiar(usuário não autenticado)
          21 de Maio de 2014, 18:27

           

          O problema eram as maiúsculas nos nomes de colunas das tabelas.  Com ajuda do Luiz Eugênio, consegui executar esta função.  Agora tudo funciona beleza.

          SEM MAIÚSCULAS!

          Obrigada, Luiz Eugênio!

Essa comunidade não possui posts nesse blog