Drupal 7 Webform AJAX - Как (повторно) инициировать после загрузки?

0

Вопрос/Ситуация

Мы хотим проверить веб-форму (через webform_ajax), которая динамически загружается с помощью AJAX.

Шаги (желательно)

  1. Посетители нажимают на ссылку
  2. Данные загружаются в DIV (jQuery AJAX Load)
  3. Форма отображается и может быть отправлена (с подтверждением и отправкой AJAX)

проблема

При отправке формы проверка AJAX не запускается, и посетитель отправляется на соответствующий узел (следующая страница). Как мы можем настроить Drupal для выполнения желаемых шагов? Мы используем следующие модули, и мы пробовали несколько методов, см. Ниже Протестировано.

Техническая проблема

На обычном узле веб-форма имеет Drupal.settings, но при загрузке с помощью AJAX нет параметров Drupal.settings для веб-формы. Параметры Drupal.settings включают идентификатор узла, который используется в родительской оболочке DIV (пример: # webform-ajax-wrapper-127). Снятие идентификатора в конце для глобального использования не помогло.

Основной вопрос

Как мы можем решить эту проблему?

Суб-вопросы (отдельные или шаги для решения этой проблемы)

  1. Каков наилучший способ включить JS после загрузки AJAX (новый контент)?
  2. Как мы можем (повторно) инициировать Webform/Webform AJAX в новом контенте?
  3. Как добавить пользовательский/новый Webform Drupal.settings?

проверенный

  • Поведение: $('div').ajaxComplete(function(){Drupal.attachBehaviors(DIV);});
  • Вставка JS на страницу drupal_add_js('sites/all/modules/webform/js/webform.js');
  • Вставка другой веб-формы для использования кода для нового контента.

Модули для работы

  • Загрузка jQuery AJAX
  • Webform
  • Webform Ajax

Модули на странице

  • Панели
  • Просмотры

Можете ли вы помочь мне в правильном направлении? Каков ваш опыт для достижения этого?

  • 0
    Этот ответ объясняет, как включить отсутствующий javascript вместе с контентом, запрошенным AJAX. Прочитав его, вы, вероятно, сможете решить (как минимум) подвопрос 1.
  • 0
    Спасибо, но как мы можем заставить это работать на панели?
Теги:
drupal
drupal-7
drupal-modules

1 ответ

0

В функции обратного вызова submit, очистить поля, такие как:

function SUBMIT_CALLBACK($form, $form_state) {
  $sid = $form_state['values']['details']['sid'];
  if ($sid) { // Success in submitted.
    $form['submitted']['FIELDNAME1']['#value'] = '';
    $form['submitted']['FIELDNAME2']['#value'] = '';
  }
  return $form;
}

Ссылка на http://envisioninteractive.com/drupal/add-ajax-to-a-webform-in-drupal-7/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню