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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向表单添加动态字段(Chronoform)相关的知识,希望对你有一定的参考价值。

我正在使用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);
}
答案

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

以上是关于向表单添加动态字段(Chronoform)的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP:向表单添加字段(动态)

向 FuelPHP 模型属性添加动态表单字段选项

如何在 devexpress 中向表单字段添加动态验证规则

向 ModelAdmin 表单添加额外字段

带有按钮的表单向其添加新字段

如何动态添加“隐藏”字段来形成?