As visualizações expostas ao envio automático do filtro perdem o foco

9

Eu configurei uma visualização com o ajax ativado. Também adicionei um filtro exposto com o envio automático ativado para que, à medida que o usuário digite no campo de texto, a exibição seja atualizada automaticamente. O problema é que, quando o formulário é enviado automaticamente, a caixa de texto perde o foco.

Eu li que preciso separar o formulário exposto em um bloco separado, no entanto, essa opção não está disponível, pois minha visualização é um bloco em si.

Qualquer ajuda seria apreciada, pois é uma verdadeira dor ter que continuar clicando na caixa de texto para continuar digitando.

MWay
fonte
2
Este é um problema conhecido: drupal.org/node/1217948 e não é assim tão fácil de correção
Daniel Wehner
Você pode fazer um expos_filter_alter para alterar manualmente os valores e adicionar seu próprio javascript?
Andrew Welch

Respostas:

3

Também foi uma solução alternativa para o problema principal, mas a inclusão desse js no meu tema resolveu esse problema para mim.

vegardjo
fonte
2

Você realmente só tem uma escolha aqui.

De uma forma ou de outra, você precisa (re) mover seu formulário para fora das visualizações.

A razão pela qual o filtro exposto perde o foco é porque toda a exibição está sendo substituída no ajax. Se o seu formulário estiver sendo renderizado pela mesma visualização, não há como você manter o foco.

Soluções (todas envolvem a remoção do formulário):

  • Use as visualizações "filtros expostos em um bloco" Opção recomendada
  • Configure um bloco personalizado para renderizar o formulário do filtro de exposição (requer código de gravação)

Abaixo estão algumas opções que você deve evitar, mas mencionando aqui como último recurso.

  • Você sempre pode "hackear" seu views.tpl.php para mover seu formulário de exposição para fora da div principal da visualização. Eu uso "hack" aqui porque esta não é uma boa opção. Isso colocará o formulário logo acima da sua visualização, mas o código JS das visualizações só substituirá a div da visualização. Dito isto, o JS não vai funcionar apenas. Você precisará consertar isso.

  • Então, como último recurso, você sempre pode usar o JS para mover seu formulário. Este é altamente desencorajar. Porque, novamente, o formulário perderá os comportamentos JS após as visualizações atualizarem a exibição

ericduran
fonte
Caso alguém mais esteja se perguntando, acredito que a solução recomendada aqui por @ericduran para selecionar a opção Views para colocar "formulário exposto em bloco" estará disponível apenas se a visualização for de uma página (não está disponível para visualização em bloco) .
Max Starkenburg