信じられないほど簡単なことで問題があります。multiselect-form要素の要素を選択すると、テキストフィールドが有効になります。私が抱えている問題は、Drupalが指定したコールバック関数を取得できないことです。
ここでmultiselect-elementを作成します。
$form['foocat'] = array(
  '#type' => 'fieldset', 
  '#title' => t('Manage subcategories'), 
  '#prefix' => '<div class="fieldset">',
  '#suffix' => '</div>',
);
$form['foocat']['subcategories'] = array(
  '#type' => 'select',
  '#default_value' => '',
  '#title' => $foocategory,
  '#options' => $options,
  '#ajax' => array(
    'callback' => 'edit_displayname_callback', 
    'wrapper' => 'displayname',
  ),
  '#attributes' => array('id' => 'foocats',),
  '#prefix' => '<div class="formselect" id="selectmapcat">',
  '#suffix' => '</div>',
  '#size' => 9,
);コードの少し先に、テキストフィールドを作成します。
$form['foocat']['subcat_displayname'] = array(
  '#type' => 'textfield',
  '#title' => t('Name'),
  '#default_value' => $entity->foocategory,
  '#size' => 25,
  '#maxlength' => 31,
  '#prefix' => '<div class="floater" id="displayname">',
  '#suffix' => '</div>',
  '#disabled' => TRUE,
);
if(!empty($form_state['subcategories'])) {
  $form['foocat']['subcat_displayname']['#disabled'] = FALSE; 
  //Code for setting the textfield, dependent on what's been selected in the multiselect
}そして、これは私のコールバック関数です:
function edit_displayname_callback($form, &$form_state) {
  watchdog("Test", "Testing callback..", array(), WATCHDOG_ALERT);
  return $form['foocat']['subcat_displayname'];
}コールバックが呼び出されることすらありません。理由はわかりません。同じフォームの別の部分でAJAXを使用していますが、AJAXは機能するので、フォームの問題ではないと思います。
誰でも問題を見つけることができますか?