Я пытаюсь создать форму в Drupal, чтобы в форму можно было добавить более одного элемента.Например, страница может содержать данные для события, тогда событие может иметь несколько дат.Итак, у меня есть форма, которая выглядит следующим образом:
/**
* Implements hook_form_alter().
*/
function addextra_form_alter(&$form, &$form_state) {
if ($form['#form_id'] == 'test_content_node_form' ) {
$form['elements_table'] = array(
'#theme' => 'table',
'#title' => 'Elements already added',
'#header' => array('Item', 'Remove'),
'#empty' => 'No elements',
'#prefix' => '<div id="elements-table">',
'#suffix' => '</div>',
);
$form['add_elements'] = array(
'#title' => 'Add another element',
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$form['add_elements']['add_content'] = array(
'#type' => 'textfield',
'#description' => t('Add an element to the table'),
'#title' => t('Add another item'),
'#size' => '12',
'#maxlength' => '60',
'#prefix' => '<div id="addextra_content">',
'#suffix' => '</div>',
);
$form['add_elements']['add_another_btn'] = array(
'#type' => 'button',
'#name' => 'add_another',
'#button_type' => 'submit',
'#executes_submit_callback' => FALSE,
'#value' => 'Add another',
'#ajax' => array(
'callback' => 'addextra_element_to_table',
),
);
}
}
Когда нажата кнопка 'add_another_btn', она запускает обратный вызов ajax 'addextra_element_to_table.
Этот обратный вызов:
function addextra_element_to_table(&$form, &$form_state) {
$form['elements_table']['#rows'][] = array($form_state['values']['add_content'], l('Remove Item', '#'));
drupal_add_js(drupal_get_path('module', 'addextra') . '/addextra.js');
return array(
'#type' => 'ajax',
'#commands' => array(
ajax_command_replace('#elements-table', render($form['elements_table'])),
),
);
}
Файл js вызывает замену val поля ввода на ''
(function ($) {
$('#edit-add-content').val('');
})(jQuery);
Но этот обратный вызов вызывается только один раз.Я считаю, что это потому, что поведение должно быть присоединено снова, как только оно было вызвано.Извините за мое невежество - я не уверен, как этого добиться.Может кто-нибудь мне помочь?Это будет высоко ценится.Заранее спасибо.