Ich habe Probleme mit etwas unglaublich Einfachem: Wenn ich ein Element in einem Element mit mehreren Auswahlformularen auswähle, soll ein Textfeld aktiviert werden. Das Problem, das ich habe, ist, dass Drupal es nie schafft, in die von mir angegebene Rückruffunktion zu gelangen.
Hier erstelle ich mein 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,
);
Ein bisschen weiter im Code erstelle ich mein Textfeld:
$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
}
Und das ist meine Rückruffunktion:
function edit_displayname_callback($form, &$form_state) {
watchdog("Test", "Testing callback..", array(), WATCHDOG_ALERT);
return $form['foocat']['subcat_displayname'];
}
Der Rückruf wird nie angerufen, und ich habe keine Ahnung warum. Ich verwende AJAX in einem anderen Teil des gleichen Formulars, und dort funktioniert es, also denke ich, dass es kein Formularproblem ist.
Kann jemand das Problem erkennen?