向表单添加动态字段(Chronoform)

时间:2011-01-30 10:41:43

标签: php javascript joomla

我正在为Joomla使用流行的ChoronoForm插件。我创建了一个包含动态字段的表单。 javascript函数用于添加多个“项目”。用户单击“添加另一个项目”按钮,将重新显示项目字段,以便插入其他“项目”。与此网站上的表单类似http://www.unclesmoney.co.uk/home3.php(填写“项目详细信息”部分,然后单击“添加其他项目”)。提交表单时,信息将通过电子邮件发送。问题是,仅发送最后插入的项目,而忽略其他itens(未发送),例如如果我只填写2个或更多项目的表格,则会发送最后填写的项目的详细信息。假设我必须编写一些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 :(得分:0)

Chronoforms在电子邮件模板中进行简单替换以填写表单值。除非你有一些代码来操纵它,否则只需要一个值。您需要做的是在“表单代码”选项卡中的“提交代码 - 发送电子邮件之前”区域中添加一些PHP。快速循环遍历所有额外字段,将它们组合到Chronoforms期望的单个变量名称中,可以解决您的问题。