ВопросДобавить группу полей по клику

Как сделать так чтобы человек заполняющий форму, по клику добавил ещё одну форму. Например на форме есть группа полей по образованию, человек добавил свой универ и хочет добавить второй.

Комментарии

Аватар пользователя Spleshka
Spleshka написал:

При помощи AJAX'a. Например, у вас структура формы университета такая:

<div id = "univer">
  <form .. /> <!--/ Первая форма дообавления университета -->
</div>

Для того, чтобы включить вторую форму, можно воспользоваться как минимум тремя вариантами:

Вариант 1: использовать js функцию load.

Если форма с добавлением университета есть на другой странице сайта, то можно сделать вот такой запрос:

$('#univer').load(
  Drupal.settings.basePath + 'страница_сайта_где_расположена_форма form', 
  {
    //тут могут быть передаваемые данные, но в вашем случае я думаю просто тут ничего не будет
  },
  function (data) {
    //Обработка данных, которые будут получены в результате AJAX запроса. В вашем случае опять же можно оставить пустым.
  }
);

Примечание: чтобы этот javascript работал в Drupal 6, необходимо включить модуль jQuery Update

Вариант 2: использовать js функцию post + написание своего небольшого модуля.

Скрипт получится примерно вот такой:

$.post(
  Drupal.settings.basePath + 'ajax_univer', 
  {
    load: 'univer'
  },
  function (data) {
    $('#univer').append(data);
  }
);

Код модуля (имямодуля.module):

function имямодуля_menu() {
  $items['ajax_univer'] = array(
    'title' => 'Ajax univer form', 
    'page callback' => 'ajax_univer', 
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK,
  );
  return $items;
}
 
function ajax_univer() {
  if ($_POST['load'] == 'univer') {
    $form = drupal_get_form('ФОРМА_С_УНИВЕРСИТЕТАМИ');
    echo $form;
  }
}

Кстати, есть ещё и 3й вариант, наверное, самый Drupal-правильный: воспользоваться Forms API

Создать кнопку на форме, добавив к ней AHAH-обработчик. Более подробно о том как это делается, и пример с выполнением на русском языке можно почитать по этой ссылке (не вижу смысла дублировать это на моём сайте).

25.07.2011 13:44
Аватар пользователя Тайный поклонник
Тайный поклонник написал:

Можно ли это реализовать в модуле webforms?

26.07.2011 16:37
Аватар пользователя Spleshka
Spleshka написал:

Можно написать свой модуль, который изменяет вебформу через hook_form_alter и добавляет туда свою кнопку.

26.07.2011 18:47

Комментировать