Ir para o conteúdo

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

Problemas com o Autocomplete

31 de Maio de 2012, 12:17 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 108 vezes

Estou com um problema no Autocomplete que é o seguinte, a primeira vez que ele faz a busca no banco ele está repetindo o valor que desistir. Por exemplo, eu digito analis no campo e o primeiro registro que tem é ANALISTA ADMINISTRATIVO e no campo fica analisANALISTA ADMINISTRATIVO. Mas se eu apago o campo e começo a digitar novamente funciona norma e quando digito analis, dai ele aparece analisTA ADMINISTRATIVO. Alguém já passou por isso?

Uma outra coisa que está acontecendo é quando se digita rápido e logo aperta o TAB para trocar de campo o não corresponde a um valor válido, então utilizei a função fwAutoCompleteValidade, mas ela sempre retorna false. E se o campo estiver inválido não apaga o valor, e não tenho como saber se realmente é inválido, pois a função sempre retorna falso.

 []s

Eduardo Cajueiro 

Autor: Eduardo Cajueiro


1010 comentários

  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
    31 de Maio de 2012, 20:21

     

    Eduardo,

    ainda não passei por este tipo de problema na complementação do campo, vou tentar reproduzir o erro com mais calma.

    Quanto a validação do campo, achei muito boa sua observação e fiz as alterações necessárias para que a função fwAutoCompleteValidade() retorne true ou false. Veja e exemplo que criei no diretório base/exemplos, o arquivo é: exe_autocomplente.php. Adicionei o evento onBlur ao campo para quando for teclado TAB o campo ser validado e se retornar false, seu conteúdo ser removido.( ainda não publiquei, verifique amanha na revsão 120 ou baixando o codigo fonte do FormDin).

    Abraço,

    Eugênio.

    • 5cddd46d69c16c39fde97488e2084bed?only path=false&size=50&d=404Felipe Colares Torres(usuário não autenticado)
      1 de Junho de 2012, 15:27

       

      Eu passo por esse erro constantemente. Já tentei dar uma olhada, mas não entendi bem o porquê e acabei deixando temporariamente assim mesmo.

      • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
        12 de Junho de 2012, 18:58

         

        Alguém conseguiu alguma solução para o problema?

        []s

        Eduardo Cajueiro 

        • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
          13 de Junho de 2012, 22:27

           

          Eu estava pesquisando a função autocomplete no JQuery, e lá funciona normalmente.

          Não estou entendendo o que está acontecendo. Alguém se anima para corrigir o problema?

          []s

          Eduardo 

          • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
            4 de Julho de 2012, 10:12

             

            Pessoal,

            Eu descrobri o problema do autocomplete. Está no arquivo /base/js/jquery/jquery.autocomplete.js,  na função autoFill, creio eu, que o valor da variável prev na primeira execução está vazia. Mas se trocar a utilização da variável prev por $input.val() o problema desaparece. Segue abaixo a versão anterior e a que eu fiz alteração para avaliação.

            Anterior:

            // fills in the input box w/the first match (assumed to be the best match)

            function autoFill(sValue){

            // if the last user key pressed was backspace, don't autofill

            if( lastKeyPressCode != 8 ){

            // fill in the value (keep the case the user has typed)

            $input.val($input.val() + sValue.substring(prev.length));

            // select the portion of the value not typed by the user (so the next character will erase)

            createSelection(prev.length, sValue.length);

            }

            };

             Alterada:

            // fills in the input box w/the first match (assumed to be the best match)

            function autoFill(sValue){

            // if the last user key pressed was backspace, don't autofill

            if( lastKeyPressCode != 8 ){

            var posInicial = $input.val().length;

            // fill in the value (keep the case the user has typed)

            $input.val($input.val() + sValue.substring(posInicial));

            // select the portion of the value not typed by the user (so the next character will erase)

            createSelection(posInicial, sValue.length);

            }

            };

             Fico no aguardo.

            []s

            Eduardo 

            • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
              4 de Julho de 2012, 10:14

               

              Esqueci de perguntar uma coisa, será que daria para implementar uma alteração no autocomplete que é a seguinte, permitir que o digitado seja procurado em qualquer parte do campo?

              []s

              Eduardo Cajueiro 

            • 46341e312d924239404ac442f5c43ed3?only path=false&size=50&d=404Eduardo Cajueiro(usuário não autenticado)
              4 de Julho de 2012, 10:16

               

              Desculpe o arquivo não é /base/js/jquery/jquery.autocomplete.js e sim /base/js/jquery/jquery.autocomplete.dylan.js.

              []s

              Eduardo Cajueiro 

              • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
                4 de Julho de 2012, 23:40

                 

                Beleza Eduardo já atualizei no svn.

                Quanto a pesquisa em qualquer posição pode ser que funcione, vou fazer uns testes.

                Abraço.

                • 590cb98ace9945484b341d25f07721bd?only path=false&size=50&d=404Miguel Gomes(usuário não autenticado)
                  2 de Abril de 2014, 17:14

                   

                  Seria muito bom se a função setAutoComplete(), tivesse um campo bool para permitir a pesquisa em qualquer posição. 

                  • 51b06d6eae66e2cfdfc361d418eea715?only path=false&size=50&d=404Luis Eugênio barbosa(usuário não autenticado)
                    17 de Abril de 2014, 21:48

                     

                    Miguel,

                    o último parametro da função setAutocomplete() é justamente para ativar a consulta em qualquer posição, coloque true que vai funcionar.

                        public function setAutoComplete( $strFieldName, $strTablePackageFuncion, $strSearchField, $mixUpdateFields=null, $boolDisableUpdateFields=null, $mixExtraSearchFields=null, $strCallBackFunctionJs=null, $intMinChars=null, $intDelay=null, $intMaxItensToShow=null, $intCacheTime=null, $boolRemoveMask=null, $strUrl=null, $strMessageNotFound=null, $boolKeepFieldValuesOnPost=null, $boolClearOnNotFound=null, $boolClearUpdateFields=null,$boolSearchAnyPosition=null )

                    Abraço.
                     

Essa comunidade não possui posts nesse blog