Le filtre exposé des vues soumises automatiquement perd de sa concentration

9

J'ai configuré une vue avec ajax activé. J'ai également ajouté un filtre exposé avec soumission automatique afin que, lorsque l'utilisateur tape dans le champ de texte, la vue soit automatiquement mise à jour. Le problème est que lorsque le formulaire soumet automatiquement, la zone de texte perd le focus.

J'ai lu que je dois séparer le formulaire exposé dans un bloc séparé, mais cette option n'est pas disponible car ma vue est un bloc lui-même.

Toute aide serait appréciée, car il est vraiment difficile de continuer à cliquer dans la zone de texte pour continuer à taper.

MWay
la source
2
C'est un problème connu: drupal.org/node/1217948 et ce n'est pas si facile à résoudre
Daniel Wehner
Pouvez-vous faire un expose_filter_alter pour modifier manuellement les valeurs et ajouter votre propre javascript?
Andrew Welch

Réponses:

3

Également une solution de contournement pour le problème principal, mais l' inclusion de ce js dans mon thème a résolu ce problème pour moi.

vegardjo
la source
2

Vous n'avez vraiment qu'un seul choix ici.

D'une manière ou d'une autre, vous devez (re) déplacer votre formulaire hors des vues.

La raison pour laquelle le filtre exposé perd le focus est que la vue entière est remplacée sur ajax. Si votre formulaire est rendu par la même vue, vous ne pourrez tout simplement pas garder le focus.

Solutions (toutes impliquent de déplacer votre formulaire hors de la vue):

  • Utiliser les vues "filtres exposés dans un bloc" Option recommandée
  • Configurer un bloc personnalisé pour restituer le formulaire de filtre d'exposition (nécessite l'écriture de code)

Vous trouverez ci-dessous quelques options à éviter, mais en mentionnant ici en dernier recours.

  • Vous pouvez toujours "pirater" votre views.tpl.php pour déplacer votre formulaire d'exposition hors de la vue principale. J'utilise "hack" ici car ce n'est pas une bonne option. Cela placera le formulaire juste au-dessus de votre vue, mais le code JS de vues ne fera que remplacer la vue div. Cela étant dit, le JS ne fonctionnera pas seulement. Vous devrez corriger cela.

  • Ensuite, en dernier recours, vous pouvez toujours utiliser JS pour déplacer votre formulaire. Celui-ci est très décourageant. Parce que là encore, le formulaire va perdre les comportements JS après que les vues mettent à jour l'affichage

ericduran
la source
Juste au cas où quelqu'un d'autre se poserait la question, je pense que la solution recommandée ici par @ericduran pour sélectionner l'option Vues pour mettre "forme exposée dans le bloc" est disponible uniquement si la vue est d'une page (elle n'est pas disponible pour une vue en tant que bloc) .
Max Starkenburg