2011-01-30 62 views
0

我使用流行的Joomla的ChoronoForm插件。我創建了一個包含動態字段的表單。 JavaScript函數用於添加多個「項目」。用戶點擊按鈕「添加另一個項目」,並且項目字段被重新顯示,以便他們插入額外的「項目」。類似於這個網站上的表格http://www.unclesmoney.co.uk/home3.php(填寫項目細節部分並點擊「添加其他項目」)。當表單被提交時,信息通過電子郵件發送。問題是,只發送最後插入的項目,而其他itens被忽略(不發送),例如如果我只填寫2個或更多項目的表格,則會發送填寫的最後一個項目的詳細信息。假設我必須編寫一些php或javascript將這些值傳遞給html模板,還是有更簡單的方法?無論哪種方式,我可以做一些關於如何做到這一點的指針。在這個論壇上有一個類似的線程,這是一個很大的幫助,但它不顯示如何修改html模板。謝謝將動態字段添加到表單(Chronoform)

<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); 
} 

回答

0

Chronoforms在電子郵件模板中做了一個簡單的替換來填寫表單值。除非你有一些代碼來操縱它,它只是期待一個單一的值。您需要做的是在「表單代碼」選項卡中的「發送代碼 - 發送電子郵件之前」區域中添加一些PHP。通過所有額外字段的快速循環將它們結合到Chronoforms期望的單個變量名稱中,可以解決您的問題。

+0

布倫特,感謝您的回覆。正如你可以看到我正在使用JavaScript這是客戶端,除非我誤會,我無法引用服務器端PHP內部的JS變量。如何獲得對這些「額外」變量的引用,以便將它們放入循環中?一個例子將不勝感激,因爲我有點卡住了。 – Apprentice 2011-01-30 17:49:14