Ir para conteúdo


Foto

Disparar query remoto de combobox somente após ENTER


  • Por favor, faça o login para responder
2 respostas neste tópico

#1 Siepi

Siepi

    Member Avançado

  • Membros
  • PipPipPip
  • 95 posts

Postado 19 June 2017 - 13:14

Pessoal, bom dia

Estou com uma questao que achava ser simples de resolver, mas que está me gastando um tempo aqui e até agora sem solução.

Eu tenho o dispare das query dos combox após 500 milisegundos da digitação do usuário.

Queria mudar isso para apenas disparar a query se o usuário, após digitar, teclasse o ENTER

Até consegui escutar um listener aqui e pegar a tecla ENTER e enviar um doQuery do combo com o raw digitado, mas isso está embananando depois que me retorna os resultados e eu navego com as setas por eles e dou enter em um. Ao inves de escolher o resultado que está selecionado ele dispara novamente a pesquisa.

Como tratar isso?

 

Segue o trecho do listener do combo

listeners: {
 specialkey: function (field, e) {
     if (e.getKey() === e.ENTER) {
       field.doQuery(field.getRawValue(), true, true);
       field.expand();
     }
 }
},

 

Agradeço a atençao.

EXTJS 4.2


E, quando o viram, o adoraram; mas alguns duvidaram. Mt28.16

#2 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3495 posts
  • LocationBelo Horizonte

Postado 26 June 2017 - 14:57

Boa tarde Siepi,

 

Como o evento é disparado pelo componente, mesmo ao selecionar algo na lista pelo ENTER, ao meu ver você tem que verificar se a lista está sendo exibida para que então não faça a pesquisa.

 

Usando a propriedade "isExpanded" pode lhe ajudar nisso:

listeners: {
    specialkey: function (field, e) {
        if (e.getKey() === e.ENTER && !field.isExpanded) {
            field.doQuery(field.getRawValue(), true, true);
            field.expand();
        }
    }
}

Veja se lhe ajuda.


"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)


#3 Siepi

Siepi

    Member Avançado

  • Membros
  • PipPipPip
  • 95 posts

Postado 26 June 2017 - 22:52

Boa tarde Siepi,

 

Como o evento é disparado pelo componente, mesmo ao selecionar algo na lista pelo ENTER, ao meu ver você tem que verificar se a lista está sendo exibida para que então não faça a pesquisa.

 

Usando a propriedade "isExpanded" pode lhe ajudar nisso:

listeners: {
    specialkey: function (field, e) {
        if (e.getKey() === e.ENTER && !field.isExpanded) {
            field.doQuery(field.getRawValue(), true, true);
            field.expand();
        }
    }
}

Veja se lhe ajuda.

Vlw Legolas, vou tentar aqui.


E, quando o viram, o adoraram; mas alguns duvidaram. Mt28.16




0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos