1

Drupalのajaxコードが終了したときにカスタムjQueryコードを実行する方法を教えてもらえますか?

コンテキストは、フォームを表示するDrupalモジュールです。フォームコンポーネントの1つは、次のコードで表示される選択リストです。

$form['selected'] = array(
'#type' => 'select',
'#title' => t('add to sequence ...'),
'#options' => $types,
'#default_value' => $types['select'],
'#description' => t('Select an option.'),
'#ajax' => array(
    'callback' => '_ajax_selected_node_callback',
),
);

Drupalは_ajax_selected_node_callback、オプションが選択されるたびに正しく呼び出します。選択リストのAJAXコールバックが終了した直後に、カスタムjQueryコードを実行する必要があります。

4

1 に答える 1

1

1つの方法は、AJAXコールバックが終了した後、Drupal.settingsを使用してカスタムJSファイルに情報を渡すことです。したがって、フォームに次のようなものを追加します。

if (isset($form_state['values']['selected'])) {
  drupal_add_js(array('MODULENAME' => array('selected' => $form_state['values']['selected'])), 'setting');
}

カスタムJSファイルには、次のようなものがあります。

(function ($) {

Drupal.behaviors.MODULENAME = {
  attach: function(context, settings) {
    // listen for select to change and get the value if it does
    if (typeof settings.MODULENAME != "undefined" && typeof settings.MODULENAME.selected != "undefined") {
      $value = settings.MODULENAME.selected;
      // do something
    }
  }
};

})(jQuery);

上記のバグをチェックしていませんが、私のポイントはDrupal.settingsを使用することです。

于 2012-06-22T13:30:59.720 に答える