Добавление динамического поля в формы (хроноформ) - PullRequest
0 голосов
/ 30 января 2011

Я использую популярный плагин ChoronoForm для Joomla.Я создал форму, которая содержит динамические поля.Функция javascript используется для добавления нескольких «элементов».Пользователь нажимает на кнопку «Добавить еще один элемент», и поле элемента снова отображается, чтобы они могли вставить дополнительные «элементы».Аналогично форме на этом веб-сайте http://www.unclesmoney.co.uk/home3.php (заполните раздел «Сведения об элементе» и нажмите «добавить другой элемент»).При отправке формы информация отправляется по электронной почте.Проблема в том, что отправляется только тот элемент, который был вставлен последним, а другие символы игнорируются (не отправляются). Например, если я заполняю форму двумя или более элементами, отправляется только информация о последнем заполненном элементе.Предположим, мне нужно написать какой-нибудь php или javascript для передачи этих значений в шаблон HTML или есть более простой способ?В любом случае, я могу сделать несколько указаний о том, как добиться этого.На этом форуме есть похожая тема, которая очень помогла, но она не показывает, как изменить шаблон HTML.Спасибо

    <div class="form_element cf_dropdown">
    <label class="cf_label" style="width: 150px;">Item Type:</label>
    <select class="cf_inputbox validate-selection" id="select_19" size="1" title=""  name="select_19">
    <option value="">Choose Option</option>
      <option value="Option 1">Option 1</option>
<option value="Option 2">Option 2</option>
<option value="Option 3">Option 3</option>
<option value="Option 4">Option 4</option>
<option value="Option 5">Option 5</option>

    </select>

  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label" style="width: 150px;">Detail</label>
    <textarea class="cf_inputbox required" rows="3" id="text_2" title="Please enter Item Detail" cols="30" name="text_2"></textarea>

  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_fileupload">
    <label class="cf_label" style="width: 150px;">File</label>
    <input class="cf_fileinput cf_inputbox" title="" size="20" id="file_3" name="file_3" type="file" />

  </div>
  <div class="cfclear">&nbsp;</div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label" style="width: 150px;">File 2</label>
    <input class="cf_inputbox required validate-number" maxlength="150" size="30" title="Must contain a value" id="text_4" name="text_4" type="text" />

  </div>
  <div class="cfclear">&nbsp;</div>
</div>
</div>

<span id="writeroot"></span>
<input type="button"  value="Add Another Item"  onclick="moreItems()" />
.....

Javascript

    var counter = 0;

function moreItems() {
   counter++;
   var newFields = document.getElementById('readRoot').cloneNode(true);
   newFields.id = '';
   newFields.style.display = 'block';
   var newField = newFields.childNodes;
   for (var i=0;i<newField.length;i++) {
      var theName = newField[i].name
      if (theName)
         newField[i].name = theName + counter;
   }
   var insertHere = document.getElementById('writeroot');
   insertHere.parentNode.insertBefore(newFields,insertHere);
}

1 Ответ

0 голосов
/ 30 января 2011

Chronoforms делает простую замену в шаблоне электронной почты, чтобы заполнить значения формы. Если у вас нет кода для манипулирования этим, он ожидает только одно значение. Что вам нужно сделать, это добавить PHP в поле «Перед отправкой кода - перед отправкой электронной почты» на вкладке «Код формы». Быстрый цикл по всем дополнительным полям, чтобы объединить их в единственное имя переменной, которое ожидает Chronoforms, должен решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...