10

1 つの公開フィルター (選択) を持つビューがあります。ユーザーが「適用」をクリックすると、ajaxを使用して再入力されます。それをクリックする必要がなく、選択が変更されたときに再入力するだけでいいのです。私は多かれ少なかれ次のような JS が必要になると想定しています (ただし、これはうまく機能していないようです)。

$('#edit-tid').change(function(){
  $('#views-exposed-form-MYVIEW-page-1').submit();
});

まず、それでうまくいくと思いますが、提出されていません。理由を知っている人はいますか?

第二に、そのコードを挿入する最良の方法は何ですか? 簡単なのでビューフッターを使おうと思っているのですが、他に何か良い案はありませんか?

更新: 上記のコード機能しています (ビュー フッターを介して挿入されます) が、初回のみです。選択がajax呼び出しによって上書きされていると思いますが、動作は再接続されていません(または何か)。うーん...

更新 #2: 簡単にするために、ajax を捨てるつもりです。

4

5 に答える 5

11

このコードを ajax 呼び出しの後に再度アタッチするには、最初に Drupal.behaviors を介してアタッチする必要があります。このようなもの:

Drupal.behaviors.myCustomModule = function(context) {
  $('#edit-tid', context).change(function(){
    $('#views-exposed-form-MYVIEW-page-1').submit();
  });
}

コンテキスト引数がセレクタに渡されることに注意してください。Drupal.behaviors は、ajax 経由で読み込まれた新しいコンテンツで再度呼び出される必要があります。

更新: ビュー フッターを介して js を挿入していることに気付きませんでした。上記は引き続き機能するはずです。「myCustomModule」を一意の識別子に置き換えるだけで、他の動作をオーバーライドしません。

于 2009-09-28T19:36:11.403 に答える
6

この機能はすぐに使えると思います (少なくとも Drupal 7 では)。ビューを編集し、 公開フォームの下で選択 します

Exposed form style -> Settings

それからオプションがあります

Autosubmit

「要素が変更されるとフォームを自動的に送信する」かどうかを選択できます。オプションを使用する可能性もあります

Hide submit button

「javascriptが有効な場合は送信ボタンを非表示にする」で説明されています。

于 2012-07-19T10:32:16.253 に答える
1

@pradeep: ビューのテーマ ビュー テンプレート ( http://www.group42.ca/theming_views_2_the_basicsを参照) に挿入できます。(申し訳ありませんが、フォーラム UI によると、これをコメントとして書き込むことができませんでした)

于 2011-09-24T17:59:36.927 に答える
0

公開ビューで選択オプションを変更するときに AJAX を機能させる必要がある場合

Drupal.behaviors.myCustomModule = {
attach: function (context, settings) {
    $('select[data-drupal-selector="edit-YOUR-FIELD"]', context).change(function(){
        $('#views-exposed-form-YOUR-VIEW-block-1 input.form-submit').trigger('click');
    });
}

};

于 2016-11-30T20:46:30.123 に答える