2011-01-30 3 views
0

Joomla 용으로 유명한 ChoronoForm 플러그인을 사용하고 있습니다. 동적 필드가 포함 된 양식을 만들었습니다. 자바 스크립트 함수는 여러 항목을 추가하는 데 사용됩니다. 사용자가 "다른 항목 추가"버튼을 클릭하면 추가 "항목"을 삽입 할 수 있도록 항목 필드가 다시 표시됩니다. 이 웹 사이트의 양식과 유사 http://www.unclesmoney.co.uk/home3.php (항목 세부 정보 섹션을 작성하고 "다른 항목 추가"를 클릭하십시오). 양식이 제출되면 정보는 이메일을 통해 전송됩니다. 문제는 마지막으로 삽입 된 항목 만 보내지고 다른 항목은 무시됩니다 (전송되지 않음). 2 개 이상의 항목으로 양식을 채우는 경우 기입 된 마지막 항목의 세부 정보 만 전송됩니다. html 템플릿에 이러한 값을 전달하기 위해 PHP 또는 자바 스크립트를 작성해야한다고 가정합니다.보다 간단한 방법이 있습니까? 어느 쪽이든 나는 이것을 수행하는 방법에 대한 몇 가지 지침으로 할 수 있습니다. 이 포럼에는 위대한 도움이되었던 유사한 스레드가 있지만 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는 양식 값을 채우기 위해 이메일 템플릿에서 간단한 대체 작업을 수행합니다. 이를 조작하는 코드가 없으면 단일 값만 기대합니다. 당신이해야 할 일은 "Form Code"탭에서 "Submit Code - 이메일 보내기"영역에 PHP를 추가하는 것입니다. 추가 필드를 모두 빠르게 통과시켜 Chronoform이 예상하는 단일 변수 이름에 결합하면 문제를 해결할 수 있습니다.

+0

브렌트, 답장을 보내 주셔서 감사합니다. 당신이 볼 수 있듯이 나는 클라이언트 측 자바 스크립트를 사용하고 있는데, 내가 틀린 경우를 제외하고 서버 측 PHP 내부에서 js 변수를 참조 할 수 없다. 이러한 "추가"변수에 대한 참조를 루프에 넣으려면 어떻게합니까? 내가 갇혀있는 것처럼 나는 한 예가 인정 될 것이다. – Apprentice

+0

자바 스크립트는 추가 양식 필드를 추가하기 만하므로 결과 필드는 모두 $ _POST의 일부로 제출됩니다. 보내지는 모든 것을 반복하기 위해서 당신은 이것을 사용할 수 있습니다 - foreach ($ _ POST as $ k => $ v) $$ k = $ v; –