web-dev-qa-db-ja.com

ビューが公開されたフィルターの自動送信がフォーカスを失う

Ajaxを有効にしてビューをセットアップしました。また、ユーザーがテキストフィールドに入力するとビューが自動的に更新されるように、自動送信をオンにした公開フィルターを追加しました。問題は、フォームが自動送信すると、テキストボックスがフォーカスを失うことです。

公開されたフォームを個別のブロックに分離する必要があることを読みましたが、私のビューはブロック自体であるため、このオプションは使用できません。

入力を続けるためにテキストボックスをクリックし続けなければならないのは本当に面倒なので、どんな助けでもありがたいです。

9
MWay

コア問題の回避策でもありますが、私のテーマの this js でこの問題は解決しました。

3
vegardjo

ここでは本当に1つの選択肢しかありません。

何らかの方法でフォームをビューから(再)移動する必要があります。

公開されたフィルターがフォーカスを失うのは、ビュー全体がajaxで置き換えられているためです。フォームが同じビューでレンダリングされている場合は、フォーカスを維持することはできません。

ソリューション(すべて、フォームをビューの外に移動する必要があります):

  • ビューを使用する "ブロック内の公開されたフィルター"推奨オプション
  • カスタムブロックをセットアップして、公開フィルターフォームをレンダリングします(コードの記述が必要)

以下は避けるべきいくつかのオプションですが、最後の手段としてここで言及します。

  • いつでもviews.tpl.phpを「ハッキング」して、公開フォームをメインビューのdivから移動できます。ここでは「ハック」を使用します。これはいいオプションではないからです。これにより、フォームがビューの真上に配置されますが、ビューのJSコードはビューのdivを置き換えるだけです。とはいえ、JSが機能するわけではありません。あなたはそれを修正する必要があります。

  • 次に、最後の手段として、いつでもJSを使用してフォームを移動できます。これは非常に落胆します。ビューが表示を更新した後も、フォームはJSの動作を失います。

2
ericduran